autofs: change catatonic setting to a bit flag
Change the superblock info. catatonic setting to be part of a flags bit field. Link: http://lkml.kernel.org/r/154296973142.9889.17275721668508589639.stgit@pluto-themaw-net Signed-off-by: Ian Kent <raven@themaw.net> Cc: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									9bf964c9ce
								
							
						
					
					
						commit
						9d8719a42e
					
				| @ -103,16 +103,18 @@ struct autofs_wait_queue { | ||||
| 
 | ||||
| #define AUTOFS_SBI_MAGIC 0x6d4a556d | ||||
| 
 | ||||
| #define AUTOFS_SBI_CATATONIC	0x0001 | ||||
| 
 | ||||
| struct autofs_sb_info { | ||||
| 	u32 magic; | ||||
| 	int pipefd; | ||||
| 	struct file *pipe; | ||||
| 	struct pid *oz_pgrp; | ||||
| 	int catatonic; | ||||
| 	int version; | ||||
| 	int sub_version; | ||||
| 	int min_proto; | ||||
| 	int max_proto; | ||||
| 	unsigned int flags; | ||||
| 	unsigned long exp_timeout; | ||||
| 	unsigned int type; | ||||
| 	struct super_block *sb; | ||||
| @ -142,7 +144,8 @@ static inline struct autofs_info *autofs_dentry_ino(struct dentry *dentry) | ||||
|  */ | ||||
| static inline int autofs_oz_mode(struct autofs_sb_info *sbi) | ||||
| { | ||||
| 	return sbi->catatonic || task_pgrp(current) == sbi->oz_pgrp; | ||||
| 	return ((sbi->flags & AUTOFS_SBI_CATATONIC) || | ||||
| 		 task_pgrp(current) == sbi->oz_pgrp); | ||||
| } | ||||
| 
 | ||||
| struct inode *autofs_get_inode(struct super_block *, umode_t); | ||||
|  | ||||
| @ -350,7 +350,7 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp, | ||||
| 	pipefd = param->setpipefd.pipefd; | ||||
| 
 | ||||
| 	mutex_lock(&sbi->wq_mutex); | ||||
| 	if (!sbi->catatonic) { | ||||
| 	if (!(sbi->flags & AUTOFS_SBI_CATATONIC)) { | ||||
| 		mutex_unlock(&sbi->wq_mutex); | ||||
| 		return -EBUSY; | ||||
| 	} else { | ||||
| @ -377,7 +377,7 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp, | ||||
| 		swap(sbi->oz_pgrp, new_pid); | ||||
| 		sbi->pipefd = pipefd; | ||||
| 		sbi->pipe = pipe; | ||||
| 		sbi->catatonic = 0; | ||||
| 		sbi->flags &= ~AUTOFS_SBI_CATATONIC; | ||||
| 	} | ||||
| out: | ||||
| 	put_pid(new_pid); | ||||
|  | ||||
| @ -227,12 +227,12 @@ int autofs_fill_super(struct super_block *s, void *data, int silent) | ||||
| 	sbi->magic = AUTOFS_SBI_MAGIC; | ||||
| 	sbi->pipefd = -1; | ||||
| 	sbi->pipe = NULL; | ||||
| 	sbi->catatonic = 1; | ||||
| 	sbi->exp_timeout = 0; | ||||
| 	sbi->oz_pgrp = NULL; | ||||
| 	sbi->sb = s; | ||||
| 	sbi->version = 0; | ||||
| 	sbi->sub_version = 0; | ||||
| 	sbi->flags = AUTOFS_SBI_CATATONIC; | ||||
| 	set_autofs_type_indirect(&sbi->type); | ||||
| 	sbi->min_proto = 0; | ||||
| 	sbi->max_proto = 0; | ||||
| @ -318,7 +318,7 @@ int autofs_fill_super(struct super_block *s, void *data, int silent) | ||||
| 	if (ret < 0) | ||||
| 		goto fail_fput; | ||||
| 	sbi->pipe = pipe; | ||||
| 	sbi->catatonic = 0; | ||||
| 	sbi->flags &= ~AUTOFS_SBI_CATATONIC; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Success! Install the root dentry now to indicate completion. | ||||
|  | ||||
| @ -510,7 +510,8 @@ static struct dentry *autofs_lookup(struct inode *dir, | ||||
| 	sbi = autofs_sbi(dir->i_sb); | ||||
| 
 | ||||
| 	pr_debug("pid = %u, pgrp = %u, catatonic = %d, oz_mode = %d\n", | ||||
| 		 current->pid, task_pgrp_nr(current), sbi->catatonic, | ||||
| 		 current->pid, task_pgrp_nr(current), | ||||
| 		 sbi->flags & AUTOFS_SBI_CATATONIC, | ||||
| 		 autofs_oz_mode(sbi)); | ||||
| 
 | ||||
| 	active = autofs_lookup_active(dentry); | ||||
| @ -563,7 +564,7 @@ static int autofs_dir_symlink(struct inode *dir, | ||||
| 	 * autofs mount is catatonic but the state of an autofs | ||||
| 	 * file system needs to be preserved over restarts. | ||||
| 	 */ | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -EACCES; | ||||
| 
 | ||||
| 	BUG_ON(!ino); | ||||
| @ -626,7 +627,7 @@ static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry) | ||||
| 	 * autofs mount is catatonic but the state of an autofs | ||||
| 	 * file system needs to be preserved over restarts. | ||||
| 	 */ | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -EACCES; | ||||
| 
 | ||||
| 	if (atomic_dec_and_test(&ino->count)) { | ||||
| @ -714,7 +715,7 @@ static int autofs_dir_rmdir(struct inode *dir, struct dentry *dentry) | ||||
| 	 * autofs mount is catatonic but the state of an autofs | ||||
| 	 * file system needs to be preserved over restarts. | ||||
| 	 */ | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -EACCES; | ||||
| 
 | ||||
| 	spin_lock(&sbi->lookup_lock); | ||||
| @ -759,7 +760,7 @@ static int autofs_dir_mkdir(struct inode *dir, | ||||
| 	 * autofs mount is catatonic but the state of an autofs | ||||
| 	 * file system needs to be preserved over restarts. | ||||
| 	 */ | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -EACCES; | ||||
| 
 | ||||
| 	pr_debug("dentry %p, creating %pd\n", dentry, dentry); | ||||
|  | ||||
| @ -20,14 +20,14 @@ void autofs_catatonic_mode(struct autofs_sb_info *sbi) | ||||
| 	struct autofs_wait_queue *wq, *nwq; | ||||
| 
 | ||||
| 	mutex_lock(&sbi->wq_mutex); | ||||
| 	if (sbi->catatonic) { | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) { | ||||
| 		mutex_unlock(&sbi->wq_mutex); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	pr_debug("entering catatonic mode\n"); | ||||
| 
 | ||||
| 	sbi->catatonic = 1; | ||||
| 	sbi->flags |= AUTOFS_SBI_CATATONIC; | ||||
| 	wq = sbi->queues; | ||||
| 	sbi->queues = NULL;	/* Erase all wait queues */ | ||||
| 	while (wq) { | ||||
| @ -255,7 +255,7 @@ static int validate_request(struct autofs_wait_queue **wait, | ||||
| 	struct autofs_wait_queue *wq; | ||||
| 	struct autofs_info *ino; | ||||
| 
 | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -ENOENT; | ||||
| 
 | ||||
| 	/* Wait in progress, continue; */ | ||||
| @ -290,7 +290,7 @@ static int validate_request(struct autofs_wait_queue **wait, | ||||
| 			if (mutex_lock_interruptible(&sbi->wq_mutex)) | ||||
| 				return -EINTR; | ||||
| 
 | ||||
| 			if (sbi->catatonic) | ||||
| 			if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 				return -ENOENT; | ||||
| 
 | ||||
| 			wq = autofs_find_wait(sbi, qstr); | ||||
| @ -359,7 +359,7 @@ int autofs_wait(struct autofs_sb_info *sbi, | ||||
| 	pid_t tgid; | ||||
| 
 | ||||
| 	/* In catatonic mode, we don't wait for nobody */ | ||||
| 	if (sbi->catatonic) | ||||
| 	if (sbi->flags & AUTOFS_SBI_CATATONIC) | ||||
| 		return -ENOENT; | ||||
| 
 | ||||
| 	/*
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user