From f6bdf318437339b1248ab2fd20139d28d9514a0e Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 6 Jan 2024 17:54:06 -0500 Subject: kill bd_buffered_fd this gets us back down to a single fd for opening block devices, which means we can use O_EXCL. Signed-off-by: Kent Overstreet --- linux/blkdev.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'linux') diff --git a/linux/blkdev.c b/linux/blkdev.c index 611c821e..61f23362 100644 --- a/linux/blkdev.c +++ b/linux/blkdev.c @@ -173,7 +173,7 @@ struct block_device *blkdev_get_by_path(const char *path, blk_mode_t mode, void *holder, const struct blk_holder_ops *hop) { struct block_device *bdev; - int fd, buffered_fd, flags = 0; + int fd, flags = 0; if ((mode & (BLK_OPEN_READ|BLK_OPEN_WRITE)) == (BLK_OPEN_READ|BLK_OPEN_WRITE)) flags = O_RDWR; @@ -185,22 +185,12 @@ struct block_device *blkdev_get_by_path(const char *path, blk_mode_t mode, if (!(mode & BLK_OPEN_BUFFERED)) flags |= O_DIRECT; -#if 0 - /* using O_EXCL doesn't work with opening twice for an O_SYNC fd: */ if (mode & BLK_OPEN_EXCL) flags |= O_EXCL; -#endif - buffered_fd = open(path, flags & ~O_DIRECT); - if (buffered_fd < 0) - return ERR_PTR(-errno); fd = open(path, flags); if (fd < 0) - fd = dup(buffered_fd); - if (fd < 0) { - close(buffered_fd); return ERR_PTR(-errno); - } bdev = malloc(sizeof(*bdev)); memset(bdev, 0, sizeof(*bdev)); @@ -210,7 +200,6 @@ struct block_device *blkdev_get_by_path(const char *path, blk_mode_t mode, bdev->bd_dev = xfstat(fd).st_rdev; bdev->bd_fd = fd; - bdev->bd_buffered_fd = buffered_fd; bdev->bd_holder = holder; bdev->bd_disk = &bdev->__bd_disk; bdev->bd_disk->bdi = &bdev->bd_disk->__bdi; -- cgit v1.2.3