* [PATCH 1/3] smb: client: show smb lease key in open_files output @ 2025-10-30 17:01 Bharath SM 2025-10-30 17:01 ` [PATCH 2/3] smb: client: show smb lease key in open_dirs output Bharath SM 2025-10-30 17:01 ` [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs Bharath SM 0 siblings, 2 replies; 11+ messages in thread From: Bharath SM @ 2025-10-30 17:01 UTC (permalink / raw) To: linux-cifs, sprasad, smfrench; +Cc: Bharath SM Add the SMB lease key in /proc/fs/cifs/open_files for debugging purposes. Signed-off-by: Bharath SM <bharathsm@microsoft.com> --- fs/smb/client/cifs_debug.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fs/smb/client/cifs_debug.c b/fs/smb/client/cifs_debug.c index 1fb71d2d31b5..1383caa5a034 100644 --- a/fs/smb/client/cifs_debug.c +++ b/fs/smb/client/cifs_debug.c @@ -249,9 +249,9 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v) seq_puts(m, "# Format:\n"); seq_puts(m, "# <tree id> <ses id> <persistent fid> <flags> <count> <pid> <uid>"); #ifdef CONFIG_CIFS_DEBUG2 - seq_puts(m, " <filename> <lease> <mid>\n"); + seq_puts(m, " <filename> <lease> <lease-key> <mid>\n"); #else - seq_puts(m, " <filename> <lease>\n"); + seq_puts(m, " <filename> <lease> <lease-key>\n"); #endif /* CIFS_DEBUG2 */ spin_lock(&cifs_tcp_ses_lock); list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) { @@ -274,6 +274,7 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v) /* Append lease/oplock caching state as RHW letters */ inode = d_inode(cfile->dentry); + cinode = NULL; n = 0; if (inode) { cinode = CIFS_I(inode); @@ -291,6 +292,12 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v) else seq_puts(m, "NONE"); + seq_puts(m, " "); + if (cinode && cinode->lease_granted) + seq_printf(m, "%pUl", cinode->lease_key); + else + seq_puts(m, "-"); + #ifdef CONFIG_CIFS_DEBUG2 seq_printf(m, " %llu", cfile->fid.mid); #endif /* CONFIG_CIFS_DEBUG2 */ -- 2.48.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] smb: client: show smb lease key in open_dirs output 2025-10-30 17:01 [PATCH 1/3] smb: client: show smb lease key in open_files output Bharath SM @ 2025-10-30 17:01 ` Bharath SM 2025-10-30 17:01 ` [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs Bharath SM 1 sibling, 0 replies; 11+ messages in thread From: Bharath SM @ 2025-10-30 17:01 UTC (permalink / raw) To: linux-cifs, sprasad, smfrench; +Cc: Bharath SM Show cached directory smb lease key in /proc/fs/cifs/open_dirs for debugging purposes. Signed-off-by: Bharath SM <bharathsm@microsoft.com> --- fs/smb/client/cifs_debug.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fs/smb/client/cifs_debug.c b/fs/smb/client/cifs_debug.c index 1383caa5a034..7fdcaf9feb16 100644 --- a/fs/smb/client/cifs_debug.c +++ b/fs/smb/client/cifs_debug.c @@ -324,7 +324,7 @@ static int cifs_debug_dirs_proc_show(struct seq_file *m, void *v) seq_puts(m, "# Version:1\n"); seq_puts(m, "# Format:\n"); - seq_puts(m, "# <tree id> <sess id> <persistent fid> <path>\n"); + seq_puts(m, "# <tree id> <sess id> <persistent fid> <lease-key> <path>\n"); spin_lock(&cifs_tcp_ses_lock); list_for_each(stmp, &cifs_tcp_ses_list) { @@ -343,11 +343,15 @@ static int cifs_debug_dirs_proc_show(struct seq_file *m, void *v) (unsigned long)atomic_long_read(&cfids->total_dirents_entries), (unsigned long long)atomic64_read(&cfids->total_dirents_bytes)); list_for_each_entry(cfid, &cfids->entries, entry) { - seq_printf(m, "0x%x 0x%llx 0x%llx %s", + seq_printf(m, "0x%x 0x%llx 0x%llx ", tcon->tid, ses->Suid, - cfid->fid.persistent_fid, - cfid->path); + cfid->fid.persistent_fid); + if (cfid->has_lease) + seq_printf(m, "%pUl ", cfid->fid.lease_key); + else + seq_puts(m, "- "); + seq_printf(m, "%s", cfid->path); if (cfid->file_all_info_is_valid) seq_printf(m, "\tvalid file info"); if (cfid->dirents.is_valid) -- 2.48.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 17:01 [PATCH 1/3] smb: client: show smb lease key in open_files output Bharath SM 2025-10-30 17:01 ` [PATCH 2/3] smb: client: show smb lease key in open_dirs output Bharath SM @ 2025-10-30 17:01 ` Bharath SM 2025-10-30 21:56 ` Paulo Alcantara 1 sibling, 1 reply; 11+ messages in thread From: Bharath SM @ 2025-10-30 17:01 UTC (permalink / raw) To: linux-cifs, sprasad, smfrench; +Cc: Bharath SM Expose the SMB directory lease bits in the cached-dir proc output for debugging purposes. Signed-off-by: Bharath SM <bharathsm@microsoft.com> --- fs/smb/client/cached_dir.c | 7 +++++++ fs/smb/client/cached_dir.h | 1 + fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c index b8ac7b7faf61..1703b5477fec 100644 --- a/fs/smb/client/cached_dir.c +++ b/fs/smb/client/cached_dir.c @@ -66,6 +66,7 @@ static struct cached_fid *find_or_create_cached_dir(struct cached_fids *cfids, * zero. */ cfid->has_lease = true; + cfid->lease_state = 0; return cfid; } @@ -350,6 +351,7 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, spin_unlock(&cfids->cfid_list_lock); goto oshr_free; } + cfid->lease_state = oplock; qi_rsp = (struct smb2_query_info_rsp *)rsp_iov[1].iov_base; if (le32_to_cpu(qi_rsp->OutputBufferLength) < sizeof(struct smb2_file_all_info)) { spin_unlock(&cfids->cfid_list_lock); @@ -388,6 +390,7 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, * lease. Release one here, and the second below. */ cfid->has_lease = false; + cfid->lease_state = 0; kref_put(&cfid->refcount, smb2_close_cached_fid); } spin_unlock(&cfids->cfid_list_lock); @@ -478,6 +481,7 @@ void drop_cached_dir_by_name(const unsigned int xid, struct cifs_tcon *tcon, spin_lock(&cfid->cfids->cfid_list_lock); if (cfid->has_lease) { cfid->has_lease = false; + cfid->lease_state = 0; kref_put(&cfid->refcount, smb2_close_cached_fid); } spin_unlock(&cfid->cfids->cfid_list_lock); @@ -577,6 +581,7 @@ void invalidate_all_cached_dirs(struct cifs_tcon *tcon) * so steal that reference. */ cfid->has_lease = false; + cfid->lease_state = 0; } else kref_get(&cfid->refcount); } @@ -632,6 +637,7 @@ bool cached_dir_lease_break(struct cifs_tcon *tcon, __u8 lease_key[16]) cfid->fid.lease_key, SMB2_LEASE_KEY_SIZE)) { cfid->has_lease = false; + cfid->lease_state = 0; cfid->time = 0; /* * We found a lease remove it from the list @@ -738,6 +744,7 @@ static void cfids_laundromat_worker(struct work_struct *work) * server. Steal that reference. */ cfid->has_lease = false; + cfid->lease_state = 0; } else kref_get(&cfid->refcount); } diff --git a/fs/smb/client/cached_dir.h b/fs/smb/client/cached_dir.h index 1e383db7c337..dd12e67870be 100644 --- a/fs/smb/client/cached_dir.h +++ b/fs/smb/client/cached_dir.h @@ -40,6 +40,7 @@ struct cached_fid { bool is_open:1; bool on_list:1; bool file_all_info_is_valid:1; + u8 lease_state; unsigned long time; /* jiffies of when lease was taken */ unsigned long last_access_time; /* jiffies of when last accessed */ struct kref refcount; diff --git a/fs/smb/client/cifs_debug.c b/fs/smb/client/cifs_debug.c index 7fdcaf9feb16..3ff17513f363 100644 --- a/fs/smb/client/cifs_debug.c +++ b/fs/smb/client/cifs_debug.c @@ -19,6 +19,7 @@ #include "cifs_debug.h" #include "cifsfs.h" #include "fs_context.h" +#include "smb2pdu.h" #ifdef CONFIG_CIFS_DFS_UPCALL #include "dfs_cache.h" #endif @@ -320,11 +321,14 @@ static int cifs_debug_dirs_proc_show(struct seq_file *m, void *v) struct cifs_tcon *tcon; struct cached_fids *cfids; struct cached_fid *cfid; + char lease[4]; + int n; + u8 lease_state; LIST_HEAD(entry); seq_puts(m, "# Version:1\n"); seq_puts(m, "# Format:\n"); - seq_puts(m, "# <tree id> <sess id> <persistent fid> <lease-key> <path>\n"); + seq_puts(m, "# <tree id> <sess id> <persistent fid> <lease> <lease-key> <path>\n"); spin_lock(&cifs_tcp_ses_lock); list_for_each(stmp, &cifs_tcp_ses_list) { @@ -343,17 +347,28 @@ static int cifs_debug_dirs_proc_show(struct seq_file *m, void *v) (unsigned long)atomic_long_read(&cfids->total_dirents_entries), (unsigned long long)atomic64_read(&cfids->total_dirents_bytes)); list_for_each_entry(cfid, &cfids->entries, entry) { - seq_printf(m, "0x%x 0x%llx 0x%llx ", + lease_state = cfid->has_lease ? cfid->lease_state : 0; + n = 0; + if (lease_state & SMB2_LEASE_READ_CACHING_HE) + lease[n++] = 'R'; + if (lease_state & SMB2_LEASE_HANDLE_CACHING_HE) + lease[n++] = 'H'; + if (lease_state & SMB2_LEASE_WRITE_CACHING_HE) + lease[n++] = 'W'; + lease[n] = '\0'; + + seq_printf(m, "0x%x 0x%llx 0x%llx %s ", tcon->tid, ses->Suid, - cfid->fid.persistent_fid); + cfid->fid.persistent_fid, + n ? lease : "NONE"); if (cfid->has_lease) seq_printf(m, "%pUl ", cfid->fid.lease_key); else seq_puts(m, "- "); seq_printf(m, "%s", cfid->path); if (cfid->file_all_info_is_valid) - seq_printf(m, "\tvalid file info"); + seq_puts(m, " valid file info"); if (cfid->dirents.is_valid) seq_printf(m, ", valid dirents"); if (!list_empty(&cfid->dirents.entries)) -- 2.48.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 17:01 ` [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs Bharath SM @ 2025-10-30 21:56 ` Paulo Alcantara 2025-10-30 22:08 ` Enzo Matsumiya 2025-10-31 3:19 ` Shyam Prasad N 0 siblings, 2 replies; 11+ messages in thread From: Paulo Alcantara @ 2025-10-30 21:56 UTC (permalink / raw) To: Bharath SM, linux-cifs, sprasad, smfrench; +Cc: Bharath SM Bharath SM <bharathsm.hsk@gmail.com> writes: > Expose the SMB directory lease bits in the cached-dir proc > output for debugging purposes. > > Signed-off-by: Bharath SM <bharathsm@microsoft.com> > --- > fs/smb/client/cached_dir.c | 7 +++++++ > fs/smb/client/cached_dir.h | 1 + > fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- > 3 files changed, 27 insertions(+), 4 deletions(-) Are you increasing cached_fid structure just for debugging purposes? That makes no sense. cached_fid structure has a dentry pointer, so what about accessing lease flags as below u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 21:56 ` Paulo Alcantara @ 2025-10-30 22:08 ` Enzo Matsumiya 2025-10-30 22:14 ` Paulo Alcantara 2025-10-31 3:18 ` Shyam Prasad N 2025-10-31 3:19 ` Shyam Prasad N 1 sibling, 2 replies; 11+ messages in thread From: Enzo Matsumiya @ 2025-10-30 22:08 UTC (permalink / raw) To: Paulo Alcantara; +Cc: Bharath SM, linux-cifs, sprasad, smfrench, Bharath SM On 10/30, Paulo Alcantara wrote: >Bharath SM <bharathsm.hsk@gmail.com> writes: > >> Expose the SMB directory lease bits in the cached-dir proc >> output for debugging purposes. >> >> Signed-off-by: Bharath SM <bharathsm@microsoft.com> >> --- >> fs/smb/client/cached_dir.c | 7 +++++++ >> fs/smb/client/cached_dir.h | 1 + >> fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- >> 3 files changed, 27 insertions(+), 4 deletions(-) > >Are you increasing cached_fid structure just for debugging purposes? >That makes no sense. > >cached_fid structure has a dentry pointer, so what about accessing lease >flags as below > > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; Also, I don't think we can even get anything different than RH caching for dirs. Even on RH -> R lease breaks (IIRC this can happen), we don't handle it and cfid is gone anyway. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 22:08 ` Enzo Matsumiya @ 2025-10-30 22:14 ` Paulo Alcantara 2025-10-31 3:18 ` Shyam Prasad N 1 sibling, 0 replies; 11+ messages in thread From: Paulo Alcantara @ 2025-10-30 22:14 UTC (permalink / raw) To: Enzo Matsumiya; +Cc: Bharath SM, linux-cifs, sprasad, smfrench, Bharath SM Enzo Matsumiya <ematsumiya@suse.de> writes: > On 10/30, Paulo Alcantara wrote: >>Bharath SM <bharathsm.hsk@gmail.com> writes: >> >>> Expose the SMB directory lease bits in the cached-dir proc >>> output for debugging purposes. >>> >>> Signed-off-by: Bharath SM <bharathsm@microsoft.com> >>> --- >>> fs/smb/client/cached_dir.c | 7 +++++++ >>> fs/smb/client/cached_dir.h | 1 + >>> fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- >>> 3 files changed, 27 insertions(+), 4 deletions(-) >> >>Are you increasing cached_fid structure just for debugging purposes? >>That makes no sense. >> >>cached_fid structure has a dentry pointer, so what about accessing lease >>flags as below >> >> u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; > > Also, I don't think we can even get anything different than RH caching > for dirs. Yes. > Even on RH -> R lease breaks (IIRC this can happen), we don't handle it > and cfid is gone anyway. Yep, that can happen. The code also doesn't seem to handle any sort of reference count on the @cfid being dumped out, which would definitely cause UAF. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 22:08 ` Enzo Matsumiya 2025-10-30 22:14 ` Paulo Alcantara @ 2025-10-31 3:18 ` Shyam Prasad N 2025-10-31 12:55 ` Enzo Matsumiya 1 sibling, 1 reply; 11+ messages in thread From: Shyam Prasad N @ 2025-10-31 3:18 UTC (permalink / raw) To: Enzo Matsumiya Cc: Paulo Alcantara, Bharath SM, linux-cifs, sprasad, smfrench, Bharath SM Hi Enzo, On Fri, Oct 31, 2025 at 3:42 AM Enzo Matsumiya <ematsumiya@suse.de> wrote: > > On 10/30, Paulo Alcantara wrote: > >Bharath SM <bharathsm.hsk@gmail.com> writes: > > > >> Expose the SMB directory lease bits in the cached-dir proc > >> output for debugging purposes. > >> > >> Signed-off-by: Bharath SM <bharathsm@microsoft.com> > >> --- > >> fs/smb/client/cached_dir.c | 7 +++++++ > >> fs/smb/client/cached_dir.h | 1 + > >> fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- > >> 3 files changed, 27 insertions(+), 4 deletions(-) > > > >Are you increasing cached_fid structure just for debugging purposes? > >That makes no sense. > > > >cached_fid structure has a dentry pointer, so what about accessing lease > >flags as below > > > > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; > > Also, I don't think we can even get anything different than RH caching > for dirs. I don't think we can make an assumption about what all servers return. I don't mind dumping this extra info about the lease state. > > Even on RH -> R lease breaks (IIRC this can happen), we don't handle it > and cfid is gone anyway. > -- Regards, Shyam ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-31 3:18 ` Shyam Prasad N @ 2025-10-31 12:55 ` Enzo Matsumiya 2025-10-31 17:32 ` Steve French 0 siblings, 1 reply; 11+ messages in thread From: Enzo Matsumiya @ 2025-10-31 12:55 UTC (permalink / raw) To: Shyam Prasad N Cc: Paulo Alcantara, Bharath SM, linux-cifs, sprasad, smfrench, Bharath SM On 10/31, Shyam Prasad N wrote: >Hi Enzo, > >On Fri, Oct 31, 2025 at 3:42 AM Enzo Matsumiya <ematsumiya@suse.de> wrote: >> >> On 10/30, Paulo Alcantara wrote: >> >Bharath SM <bharathsm.hsk@gmail.com> writes: >> > >> >> Expose the SMB directory lease bits in the cached-dir proc >> >> output for debugging purposes. >> >> >> >> Signed-off-by: Bharath SM <bharathsm@microsoft.com> >> >> --- >> >> fs/smb/client/cached_dir.c | 7 +++++++ >> >> fs/smb/client/cached_dir.h | 1 + >> >> fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- >> >> 3 files changed, 27 insertions(+), 4 deletions(-) >> > >> >Are you increasing cached_fid structure just for debugging purposes? >> >That makes no sense. >> > >> >cached_fid structure has a dentry pointer, so what about accessing lease >> >flags as below >> > >> > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; >> >> Also, I don't think we can even get anything different than RH caching >> for dirs. >I don't think we can make an assumption about what all servers return. >I don't mind dumping this extra info about the lease state. It's not an assumption, it's a fact -- if a server returns anything different than RH for a dir lease, the server is broken and we shouldn't even trust/cache it. >> Even on RH -> R lease breaks (IIRC this can happen), we don't handle it >> and cfid is gone anyway. My point is a dir is either cached (RH, cfid->has_lease == true) or we don't (lease break with 0 or R-cache only, cfid->has_lease == false). So unless we're changing/handling the behaviour for RH -> R downgrades (which I really think we shouldn't), creating such level of granularity makes no sense and will only cause confusion (imagine seeing W-caching for a dir). Cheers, Enzo ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-31 12:55 ` Enzo Matsumiya @ 2025-10-31 17:32 ` Steve French 0 siblings, 0 replies; 11+ messages in thread From: Steve French @ 2025-10-31 17:32 UTC (permalink / raw) To: Enzo Matsumiya Cc: Shyam Prasad N, Paulo Alcantara, Bharath SM, linux-cifs, sprasad, Bharath SM dropped that patch from for-next (kept the other two small debug ones, although those are low priority) On Fri, Oct 31, 2025 at 7:55 AM Enzo Matsumiya <ematsumiya@suse.de> wrote: > > On 10/31, Shyam Prasad N wrote: > >Hi Enzo, > > > >On Fri, Oct 31, 2025 at 3:42 AM Enzo Matsumiya <ematsumiya@suse.de> wrote: > >> > >> On 10/30, Paulo Alcantara wrote: > >> >Bharath SM <bharathsm.hsk@gmail.com> writes: > >> > > >> >> Expose the SMB directory lease bits in the cached-dir proc > >> >> output for debugging purposes. > >> >> > >> >> Signed-off-by: Bharath SM <bharathsm@microsoft.com> > >> >> --- > >> >> fs/smb/client/cached_dir.c | 7 +++++++ > >> >> fs/smb/client/cached_dir.h | 1 + > >> >> fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- > >> >> 3 files changed, 27 insertions(+), 4 deletions(-) > >> > > >> >Are you increasing cached_fid structure just for debugging purposes? > >> >That makes no sense. > >> > > >> >cached_fid structure has a dentry pointer, so what about accessing lease > >> >flags as below > >> > > >> > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; > >> > >> Also, I don't think we can even get anything different than RH caching > >> for dirs. > >I don't think we can make an assumption about what all servers return. > >I don't mind dumping this extra info about the lease state. > > It's not an assumption, it's a fact -- if a server returns anything > different than RH for a dir lease, the server is broken and we shouldn't > even trust/cache it. > > >> Even on RH -> R lease breaks (IIRC this can happen), we don't handle it > >> and cfid is gone anyway. > > My point is a dir is either cached (RH, cfid->has_lease == true) or we > don't (lease break with 0 or R-cache only, cfid->has_lease == false). > > So unless we're changing/handling the behaviour for RH -> R downgrades > (which I really think we shouldn't), creating such level of granularity > makes no sense and will only cause confusion (imagine seeing W-caching > for a dir). > > > Cheers, > > Enzo -- Thanks, Steve ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-30 21:56 ` Paulo Alcantara 2025-10-30 22:08 ` Enzo Matsumiya @ 2025-10-31 3:19 ` Shyam Prasad N 2025-10-31 7:31 ` Bharath SM 1 sibling, 1 reply; 11+ messages in thread From: Shyam Prasad N @ 2025-10-31 3:19 UTC (permalink / raw) To: Paulo Alcantara; +Cc: Bharath SM, linux-cifs, sprasad, smfrench, Bharath SM On Fri, Oct 31, 2025 at 3:28 AM Paulo Alcantara <pc@manguebit.org> wrote: > > Bharath SM <bharathsm.hsk@gmail.com> writes: > > > Expose the SMB directory lease bits in the cached-dir proc > > output for debugging purposes. > > > > Signed-off-by: Bharath SM <bharathsm@microsoft.com> > > --- > > fs/smb/client/cached_dir.c | 7 +++++++ > > fs/smb/client/cached_dir.h | 1 + > > fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- > > 3 files changed, 27 insertions(+), 4 deletions(-) > > Are you increasing cached_fid structure just for debugging purposes? > That makes no sense. > > cached_fid structure has a dentry pointer, so what about accessing lease > flags as below > > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; > I agree with Paulo here. We should avoid duplicating data if it's already available elsewhere. -- Regards, Shyam ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs 2025-10-31 3:19 ` Shyam Prasad N @ 2025-10-31 7:31 ` Bharath SM 0 siblings, 0 replies; 11+ messages in thread From: Bharath SM @ 2025-10-31 7:31 UTC (permalink / raw) To: Shyam Prasad N; +Cc: Paulo Alcantara, linux-cifs, sprasad, smfrench, Bharath SM On Thu, Oct 30, 2025 at 8:20 PM Shyam Prasad N <nspmangalore@gmail.com> wrote: > > On Fri, Oct 31, 2025 at 3:28 AM Paulo Alcantara <pc@manguebit.org> wrote: > > > > Bharath SM <bharathsm.hsk@gmail.com> writes: > > > > > Expose the SMB directory lease bits in the cached-dir proc > > > output for debugging purposes. > > > > > > Signed-off-by: Bharath SM <bharathsm@microsoft.com> > > > --- > > > fs/smb/client/cached_dir.c | 7 +++++++ > > > fs/smb/client/cached_dir.h | 1 + > > > fs/smb/client/cifs_debug.c | 23 +++++++++++++++++++---- > > > 3 files changed, 27 insertions(+), 4 deletions(-) > > > > Are you increasing cached_fid structure just for debugging purposes? > > That makes no sense. > > > > cached_fid structure has a dentry pointer, so what about accessing lease > > flags as below > > > > u8 lease_state = CIFS_I(d_inode(cfid->dentry))->oplock; > > > I agree with Paulo here. We should avoid duplicating data if it's > already available elsewhere. Thanks for your comments. For directory leases, I don't see we are populating/storing lease state anywhere including cinode in current code, unless i am missing something. Today we check if we have R lease then set has_lease = true. I added a new u8 lease_state, the idea is to use this flag, 1) For showing state in debug files in this patch 2) Adding trace points to print lease state and other info, I don't see any directory caching tracepoints 3) Importantly today we don't differentiate the directory caching when we get R vs RH from the server, i think we need to. We can probably repurpose the has_lease field by refactoring code. But I am fine if we want to defer this patch until we have #2 and #3. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2025-10-31 17:33 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-30 17:01 [PATCH 1/3] smb: client: show smb lease key in open_files output Bharath SM 2025-10-30 17:01 ` [PATCH 2/3] smb: client: show smb lease key in open_dirs output Bharath SM 2025-10-30 17:01 ` [PATCH 3/3] smb: client: show directory lease state in /proc/fs/cifs/open_dirs Bharath SM 2025-10-30 21:56 ` Paulo Alcantara 2025-10-30 22:08 ` Enzo Matsumiya 2025-10-30 22:14 ` Paulo Alcantara 2025-10-31 3:18 ` Shyam Prasad N 2025-10-31 12:55 ` Enzo Matsumiya 2025-10-31 17:32 ` Steve French 2025-10-31 3:19 ` Shyam Prasad N 2025-10-31 7:31 ` Bharath SM
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox