bdev.c (2a906db2824b75444982f5e9df870106982afca8) bdev.c (2d985f8c6b91b5007a16e640bb9c038c5fb2839b)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 1991, 1992 Linus Torvalds
4 * Copyright (C) 2001 Andrea Arcangeli <andrea@suse.de> SuSE
5 * Copyright (C) 2016 - 2020 Christoph Hellwig
6 */
7
8#include <linux/init.h>

--- 12 unchanged lines hidden (view full) ---

21#include <linux/swap.h>
22#include <linux/writeback.h>
23#include <linux/mount.h>
24#include <linux/pseudo_fs.h>
25#include <linux/uio.h>
26#include <linux/namei.h>
27#include <linux/part_stat.h>
28#include <linux/uaccess.h>
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 1991, 1992 Linus Torvalds
4 * Copyright (C) 2001 Andrea Arcangeli <andrea@suse.de> SuSE
5 * Copyright (C) 2016 - 2020 Christoph Hellwig
6 */
7
8#include <linux/init.h>

--- 12 unchanged lines hidden (view full) ---

21#include <linux/swap.h>
22#include <linux/writeback.h>
23#include <linux/mount.h>
24#include <linux/pseudo_fs.h>
25#include <linux/uio.h>
26#include <linux/namei.h>
27#include <linux/part_stat.h>
28#include <linux/uaccess.h>
29#include <linux/stat.h>
29#include "../fs/internal.h"
30#include "blk.h"
31
32struct bdev_inode {
33 struct block_device bdev;
34 struct inode vfs_inode;
35};
36

--- 1027 unchanged lines hidden (view full) ---

1064 }
1065 mutex_unlock(&bdev->bd_disk->open_mutex);
1066
1067 spin_lock(&blockdev_superblock->s_inode_list_lock);
1068 }
1069 spin_unlock(&blockdev_superblock->s_inode_list_lock);
1070 iput(old_inode);
1071}
30#include "../fs/internal.h"
31#include "blk.h"
32
33struct bdev_inode {
34 struct block_device bdev;
35 struct inode vfs_inode;
36};
37

--- 1027 unchanged lines hidden (view full) ---

1065 }
1066 mutex_unlock(&bdev->bd_disk->open_mutex);
1067
1068 spin_lock(&blockdev_superblock->s_inode_list_lock);
1069 }
1070 spin_unlock(&blockdev_superblock->s_inode_list_lock);
1071 iput(old_inode);
1072}
1073
1074/*
1075 * Handle STATX_DIOALIGN for block devices.
1076 *
1077 * Note that the inode passed to this is the inode of a block device node file,
1078 * not the block device's internal inode. Therefore it is *not* valid to use
1079 * I_BDEV() here; the block device has to be looked up by i_rdev instead.
1080 */
1081void bdev_statx_dioalign(struct inode *inode, struct kstat *stat)
1082{
1083 struct block_device *bdev;
1084
1085 bdev = blkdev_get_no_open(inode->i_rdev);
1086 if (!bdev)
1087 return;
1088
1089 stat->dio_mem_align = bdev_dma_alignment(bdev) + 1;
1090 stat->dio_offset_align = bdev_logical_block_size(bdev);
1091 stat->result_mask |= STATX_DIOALIGN;
1092
1093 blkdev_put_no_open(bdev);
1094}