Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d4ab5da authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
  cifs: when renaming don't try to unlink negative dentry
  cifs: remove unneeded bcc_ptr update in CIFSTCon
  cifs: add cFYI messages with some of the saved strings from ssetup/tcon
  cifs: fix buffer size for tcon->nativeFileSystem field
  cifs: fix unicode string area word alignment in session setup
  [CIFS] Fix build break caused by change to new current_umask helper function
  [CIFS] Fix sparse warnings
  [CIFS] Add support for posix open during lookup
  cifs: no need to use rcu_assign_pointer on immutable keys
  cifs: remove dnotify thread code
  [CIFS] remove some build warnings
  cifs: vary timeout on writes past EOF based on offset (try #5)
  [CIFS] Fix build break from recent DFS patch when DFS support not enabled
  Remote DFS root support.
  [CIFS] Endian convert UniqueId when reporting inode numbers from server files
  cifs: remove some pointless conditionals before kfree()
  cifs: flush data on any setattr
parents df89f1ba fc6f3943
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -15,7 +15,8 @@ Posix file open support added (turned off after one attempt if server
fails to support it properly, as with Samba server versions prior to 3.3.2)
Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too
little memory for the "nativeFileSystem" field returned by the server
during mount). 
during mount).  Endian convert inode numbers if necessary (makes it easier
to compare inode numbers on network files from big endian systems). 

Version 1.56
------------
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ cifs_spnego_key_instantiate(struct key *key, const void *data, size_t datalen)

	/* attach the data */
	memcpy(payload, data, datalen);
	rcu_assign_pointer(key->payload.data, payload);
	key->payload.data = payload;
	ret = 0;

error:
+1 −47
Original line number Diff line number Diff line
@@ -66,9 +66,6 @@ unsigned int sign_CIFS_PDUs = 1;
extern struct task_struct *oplockThread; /* remove sparse warning */
struct task_struct *oplockThread = NULL;
/* extern struct task_struct * dnotifyThread; remove sparse warning */
#ifdef CONFIG_CIFS_EXPERIMENTAL
static struct task_struct *dnotifyThread = NULL;
#endif
static const struct super_operations cifs_super_ops;
unsigned int CIFSMaxBufSize = CIFS_MAX_MSGSIZE;
module_param(CIFSMaxBufSize, int, 0);
@@ -316,6 +313,7 @@ cifs_alloc_inode(struct super_block *sb)
	cifs_inode->clientCanCacheAll = false;
	cifs_inode->delete_pending = false;
	cifs_inode->vfs_inode.i_blkbits = 14;  /* 2**14 = CIFS_MAX_MSGSIZE */
	cifs_inode->server_eof = 0;

	/* Can not set i_flags here - they get immediately overwritten
	   to zero by the VFS */
@@ -1040,34 +1038,6 @@ static int cifs_oplock_thread(void *dummyarg)
	return 0;
}

#ifdef CONFIG_CIFS_EXPERIMENTAL
static int cifs_dnotify_thread(void *dummyarg)
{
	struct list_head *tmp;
	struct TCP_Server_Info *server;

	do {
		if (try_to_freeze())
			continue;
		set_current_state(TASK_INTERRUPTIBLE);
		schedule_timeout(15*HZ);
		/* check if any stuck requests that need
		   to be woken up and wakeq so the
		   thread can wake up and error out */
		read_lock(&cifs_tcp_ses_lock);
		list_for_each(tmp, &cifs_tcp_ses_list) {
			server = list_entry(tmp, struct TCP_Server_Info,
					 tcp_ses_list);
			if (atomic_read(&server->inFlight))
				wake_up_all(&server->response_q);
		}
		read_unlock(&cifs_tcp_ses_lock);
	} while (!kthread_should_stop());

	return 0;
}
#endif

static int __init
init_cifs(void)
{
@@ -1144,21 +1114,8 @@ init_cifs(void)
		goto out_unregister_dfs_key_type;
	}

#ifdef CONFIG_CIFS_EXPERIMENTAL
	dnotifyThread = kthread_run(cifs_dnotify_thread, NULL, "cifsdnotifyd");
	if (IS_ERR(dnotifyThread)) {
		rc = PTR_ERR(dnotifyThread);
		cERROR(1, ("error %d create dnotify thread", rc));
		goto out_stop_oplock_thread;
	}
#endif

	return 0;

#ifdef CONFIG_CIFS_EXPERIMENTAL
 out_stop_oplock_thread:
#endif
	kthread_stop(oplockThread);
 out_unregister_dfs_key_type:
#ifdef CONFIG_CIFS_DFS_UPCALL
	unregister_key_type(&key_type_dns_resolver);
@@ -1196,9 +1153,6 @@ exit_cifs(void)
	cifs_destroy_inodecache();
	cifs_destroy_mids();
	cifs_destroy_request_bufs();
#ifdef CONFIG_CIFS_EXPERIMENTAL
	kthread_stop(dnotifyThread);
#endif
	kthread_stop(oplockThread);
}

+2 −1
Original line number Diff line number Diff line
@@ -350,7 +350,7 @@ struct cifsFileInfo {
	bool invalidHandle:1;	/* file closed via session abend */
	bool messageMode:1;	/* for pipes: message vs byte mode */
	atomic_t wrtPending;   /* handle in use - defer close */
	struct semaphore fh_sem; /* prevents reopen race after dead ses*/
	struct mutex fh_mutex; /* prevents reopen race after dead ses*/
	struct cifs_search_info srch_inf;
};

@@ -370,6 +370,7 @@ struct cifsInodeInfo {
	bool clientCanCacheAll:1;	/* read and writebehind oplock */
	bool oplockPending:1;
	bool delete_pending:1;		/* DELETE_ON_CLOSE is set */
	u64  server_eof;		/* current file size on server */
	struct inode vfs_inode;
};

+4 −4
Original line number Diff line number Diff line
@@ -2163,7 +2163,7 @@ typedef struct {
	__le32 Type;
	__le64 DevMajor;
	__le64 DevMinor;
	__u64 UniqueId;
	__le64 UniqueId;
	__le64 Permissions;
	__le64 Nlinks;
} __attribute__((packed)) FILE_UNIX_BASIC_INFO;	/* level 0x200 QPathInfo */
@@ -2308,7 +2308,7 @@ struct unlink_psx_rq { /* level 0x20a SetPathInfo */
} __attribute__((packed));

struct file_internal_info {
	__u64  UniqueId; /* inode number */
	__le64  UniqueId; /* inode number */
} __attribute__((packed));      /* level 0x3ee */

struct file_mode_info {
@@ -2338,7 +2338,7 @@ typedef struct {
	__le32 Type;
	__le64 DevMajor;
	__le64 DevMinor;
	__u64 UniqueId;
	__le64 UniqueId;
	__le64 Permissions;
	__le64 Nlinks;
	char FileName[1];
@@ -2386,7 +2386,7 @@ typedef struct {
	__le32 FileNameLength;
	__le32 EaSize; /* EA size */
	__le32 Reserved;
	__u64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/
	__le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/
	char FileName[1];
} __attribute__((packed)) SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp data */

Loading