OSDN Git Service

loop: Move special partition reread handling in loop_clr_fd()
authorJan Kara <jack@suse.cz>
Thu, 8 Nov 2018 13:01:12 +0000 (14:01 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 8 Nov 2018 13:30:30 +0000 (06:30 -0700)
commitd57f3374ba4817f7c8d26fae8a13d20ac8d31b92
treebfcc6f9aec53526139b599ec9a814a30b2d08137
parentc371077000f4138ee3c15fbed50101ff24bdc91d
loop: Move special partition reread handling in loop_clr_fd()

The call of __blkdev_reread_part() from loop_reread_partition() happens
only when we need to invalidate partitions from loop_release(). Thus
move a detection for this into loop_clr_fd() and simplify
loop_reread_partition().

This makes loop_reread_partition() safe to use without loop_ctl_mutex
because we use only lo->lo_number and lo->lo_file_name in case of error
for reporting purposes (thus possibly reporting outdate information is
not a big deal) and we are safe from 'lo' going away under us by
elevated lo->lo_refcnt.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/loop.c