|
|
@@ -1205,7 +1205,7 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
|
|
|
static int
|
|
|
loop_get_status(struct loop_device *lo, struct loop_info64 *info)
|
|
|
{
|
|
|
- struct file *file;
|
|
|
+ struct path path;
|
|
|
struct kstat stat;
|
|
|
int ret;
|
|
|
|
|
|
@@ -1230,16 +1230,16 @@ loop_get_status(struct loop_device *lo, struct loop_info64 *info)
|
|
|
}
|
|
|
|
|
|
/* Drop lo_ctl_mutex while we call into the filesystem. */
|
|
|
- file = get_file(lo->lo_backing_file);
|
|
|
+ path = lo->lo_backing_file->f_path;
|
|
|
+ path_get(&path);
|
|
|
mutex_unlock(&lo->lo_ctl_mutex);
|
|
|
- ret = vfs_getattr(&file->f_path, &stat, STATX_INO,
|
|
|
- AT_STATX_SYNC_AS_STAT);
|
|
|
+ ret = vfs_getattr(&path, &stat, STATX_INO, AT_STATX_SYNC_AS_STAT);
|
|
|
if (!ret) {
|
|
|
info->lo_device = huge_encode_dev(stat.dev);
|
|
|
info->lo_inode = stat.ino;
|
|
|
info->lo_rdevice = huge_encode_dev(stat.rdev);
|
|
|
}
|
|
|
- fput(file);
|
|
|
+ path_put(&path);
|
|
|
return ret;
|
|
|
}
|
|
|
|