block: all callers should check blkdev_issue_flush's return
It is concerning that a FLUSH may fail but the blkdev_issue_flush
callers assume it will always succeed.
Each blkdev_issue_flush caller should come to terms with the reality
that a FLUSH may fail -- the file_operations' .fsync methods in
particular. nilfs2 is the only filesystem that checks
blkdev_issue_flush's return.
-extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
+extern int __must_check blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
sector_t nr_sects, gfp_t gfp_mask, unsigned long flags);
extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
--
1.7.1
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
06-26-2012, 03:33 PM
Jeff Moyer
block: all callers should check blkdev_issue_flush's return
Mike Snitzer <snitzer@redhat.com> writes:
> It is concerning that a FLUSH may fail but the blkdev_issue_flush
> callers assume it will always succeed.
>
> Each blkdev_issue_flush caller should come to terms with the reality
> that a FLUSH may fail -- the file_operations' .fsync methods in
> particular. nilfs2 is the only filesystem that checks
> blkdev_issue_flush's return.
Yeah, as it stands, it looks like in many cases fsync won't return an
error if a flush fails. That's bad.
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel