switch (cmd) { case EXT2_IOC_GETVERSION: return put_user(inode->i_generation, (int __user *) arg); case EXT2_IOC_SETVERSION: {
__u32 generation;
if (!inode_owner_or_capable(&nop_mnt_idmap, inode)) return -EPERM;
ret = mnt_want_write_file(filp); if (ret) return ret; if (get_user(generation, (int __user *) arg)) {
ret = -EFAULT; goto setversion_out;
}
mark_inode_dirty(inode);
setversion_out:
mnt_drop_write_file(filp); return ret;
} case EXT2_IOC_GETRSVSZ: if (test_opt(inode->i_sb, RESERVATION)
&& S_ISREG(inode->i_mode)
&& ei->i_block_alloc_info) {
rsv_window_size = ei->i_block_alloc_info->rsv_window_node.rsv_goal_size; return put_user(rsv_window_size, (int __user *)arg);
} return -ENOTTY; case EXT2_IOC_SETRSVSZ: {
if (!test_opt(inode->i_sb, RESERVATION) ||!S_ISREG(inode->i_mode)) return -ENOTTY;
if (!inode_owner_or_capable(&nop_mnt_idmap, inode)) return -EACCES;
if (get_user(rsv_window_size, (int __user *)arg)) return -EFAULT;
ret = mnt_want_write_file(filp); if (ret) return ret;
if (rsv_window_size > EXT2_MAX_RESERVE_BLOCKS)
rsv_window_size = EXT2_MAX_RESERVE_BLOCKS;
/* * need to allocate reservation structure for this inode * before set the window size
*/ /* * XXX What lock should protect the rsv_goal_size? * Accessed in ext2_get_block only. ext3 uses i_truncate.
*/
mutex_lock(&ei->truncate_mutex); if (!ei->i_block_alloc_info)
ext2_init_block_alloc_info(inode);
if (ei->i_block_alloc_info){ struct ext2_reserve_window_node *rsv = &ei->i_block_alloc_info->rsv_window_node;
rsv->rsv_goal_size = rsv_window_size;
} else {
ret = -ENOMEM;
}
#ifdef CONFIG_COMPAT long ext2_compat_ioctl(struct file *file, unsignedint cmd, unsignedlong arg)
{ /* These are just misnamed, they actually get/put from/to user an int */ switch (cmd) { case EXT2_IOC32_GETVERSION:
cmd = EXT2_IOC_GETVERSION; break; case EXT2_IOC32_SETVERSION:
cmd = EXT2_IOC_SETVERSION; break; default: return -ENOIOCTLCMD;
} return ext2_ioctl(file, cmd, (unsignedlong) compat_ptr(arg));
} #endif
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.