loop.c (2e5ab5f379f96a6207c45be40c357ebb1beb8ef3) | loop.c (ab1cb278bc7027663adbfb0b81404f8398437e11) |
---|---|
1/* 2 * linux/drivers/block/loop.c 3 * 4 * Written by Theodore Ts'o, 3/29/93 5 * 6 * Copyright 1993 by Theodore Ts'o. Redistribution of this file is 7 * permitted under the GNU General Public License. 8 * --- 1214 unchanged lines hidden (view full) --- 1223static int loop_set_capacity(struct loop_device *lo, struct block_device *bdev) 1224{ 1225 if (unlikely(lo->lo_state != Lo_bound)) 1226 return -ENXIO; 1227 1228 return figure_loop_size(lo, lo->lo_offset, lo->lo_sizelimit); 1229} 1230 | 1/* 2 * linux/drivers/block/loop.c 3 * 4 * Written by Theodore Ts'o, 3/29/93 5 * 6 * Copyright 1993 by Theodore Ts'o. Redistribution of this file is 7 * permitted under the GNU General Public License. 8 * --- 1214 unchanged lines hidden (view full) --- 1223static int loop_set_capacity(struct loop_device *lo, struct block_device *bdev) 1224{ 1225 if (unlikely(lo->lo_state != Lo_bound)) 1226 return -ENXIO; 1227 1228 return figure_loop_size(lo, lo->lo_offset, lo->lo_sizelimit); 1229} 1230 |
1231static int loop_set_dio(struct loop_device *lo, unsigned long arg) 1232{ 1233 int error = -ENXIO; 1234 if (lo->lo_state != Lo_bound) 1235 goto out; 1236 1237 __loop_update_dio(lo, !!arg); 1238 if (lo->use_dio == !!arg) 1239 return 0; 1240 error = -EINVAL; 1241 out: 1242 return error; 1243} 1244 |
|
1231static int lo_ioctl(struct block_device *bdev, fmode_t mode, 1232 unsigned int cmd, unsigned long arg) 1233{ 1234 struct loop_device *lo = bdev->bd_disk->private_data; 1235 int err; 1236 1237 mutex_lock_nested(&lo->lo_ctl_mutex, 1); 1238 switch (cmd) { --- 27 unchanged lines hidden (view full) --- 1266 case LOOP_GET_STATUS64: 1267 err = loop_get_status64(lo, (struct loop_info64 __user *) arg); 1268 break; 1269 case LOOP_SET_CAPACITY: 1270 err = -EPERM; 1271 if ((mode & FMODE_WRITE) || capable(CAP_SYS_ADMIN)) 1272 err = loop_set_capacity(lo, bdev); 1273 break; | 1245static int lo_ioctl(struct block_device *bdev, fmode_t mode, 1246 unsigned int cmd, unsigned long arg) 1247{ 1248 struct loop_device *lo = bdev->bd_disk->private_data; 1249 int err; 1250 1251 mutex_lock_nested(&lo->lo_ctl_mutex, 1); 1252 switch (cmd) { --- 27 unchanged lines hidden (view full) --- 1280 case LOOP_GET_STATUS64: 1281 err = loop_get_status64(lo, (struct loop_info64 __user *) arg); 1282 break; 1283 case LOOP_SET_CAPACITY: 1284 err = -EPERM; 1285 if ((mode & FMODE_WRITE) || capable(CAP_SYS_ADMIN)) 1286 err = loop_set_capacity(lo, bdev); 1287 break; |
1288 case LOOP_SET_DIRECT_IO: 1289 err = -EPERM; 1290 if ((mode & FMODE_WRITE) || capable(CAP_SYS_ADMIN)) 1291 err = loop_set_dio(lo, arg); 1292 break; |
|
1274 default: 1275 err = lo->ioctl ? lo->ioctl(lo, cmd, arg) : -EINVAL; 1276 } 1277 mutex_unlock(&lo->lo_ctl_mutex); 1278 1279out_unlocked: 1280 return err; 1281} --- 662 unchanged lines hidden --- | 1293 default: 1294 err = lo->ioctl ? lo->ioctl(lo, cmd, arg) : -EINVAL; 1295 } 1296 mutex_unlock(&lo->lo_ctl_mutex); 1297 1298out_unlocked: 1299 return err; 1300} --- 662 unchanged lines hidden --- |