From: Tycho Andersen <tandersen@xxxxxxxxxxx> In future patches, we'll need a count of the number of open file descriptors for misc NOFILE cgroup migration, so introduce a helper to do this. Signed-off-by: Tycho Andersen <tandersen@xxxxxxxxxxx> --- fs/file.c | 10 ++++++++++ include/linux/fdtable.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/fs/file.c b/fs/file.c index b1633c00bd3c..539bead2364e 100644 --- a/fs/file.c +++ b/fs/file.c @@ -285,6 +285,16 @@ static unsigned int count_possible_open_files(struct fdtable *fdt) return i; } +u64 count_open_files(struct fdtable *fdt) +{ + int i; + u64 retval = 0; + + for (i = 0; i < DIV_ROUND_UP(fdt->max_fds, BITS_PER_LONG); i++) + retval += hweight64((__u64)fdt->open_fds[i]); + return retval; +} + /* * Note that a sane fdtable size always has to be a multiple of * BITS_PER_LONG, since we have bitmaps that are sized by this. diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h index bc4c3287a65e..d74234c5d4e9 100644 --- a/include/linux/fdtable.h +++ b/include/linux/fdtable.h @@ -77,6 +77,8 @@ struct dentry; #define files_fdtable(files) \ rcu_dereference_check_fdtable((files), (files)->fdt) +u64 count_open_files(struct fdtable *fdt); + /* * The caller must ensure that fd table isn't shared or hold rcu or file lock */ -- 2.34.1