Re: [PATCH] [PATCH] staging: lustre: Remove unused memhog functionality

From: Dighe, Niranjan (N.)
Date: Wed Dec 23 2015 - 04:37:16 EST


On Wed, Dec 23, 2015 at 02:33:29PM +0530, Niranjan Dighe wrote:
> From: Niranjan Dighe <ndighe@xxxxxxxxxxx>
>
> Remove IOC_LIBCFS_MEMHOG ioctl functionality as it is no longer needed thereby
> making functions like - kportal_memhog_alloc(), kportal_memhog_free() and type -
> struct libcfs_device_userstate unused.
>
> Signed-off-by: Niranjan Dighe <ndighe@xxxxxxxxxxx>
> ---
> .../lustre/include/linux/libcfs/libcfs_private.h | 5 -
> .../lustre/lustre/libcfs/linux/linux-module.c | 14 +-
> drivers/staging/lustre/lustre/libcfs/module.c | 139 --------------------
> 3 files changed, 2 insertions(+), 156 deletions(-)
>
> diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> index d6273e1..e044d6f 100644
> --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> @@ -391,11 +391,6 @@ int cfs_percpt_atomic_summary(atomic_t **refs);
> * Support for temporary event tracing with minimal Heisenberg effect.
> * -------------------------------------------------------------------- */
>
> -struct libcfs_device_userstate {
> - int ldu_memhog_pages;
> - struct page *ldu_memhog_root_page;
> -};
> -
> #define MKSTR(ptr) ((ptr)) ? (ptr) : ""
>
> static inline int cfs_size_round4(int val)
> diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c
> index 70a99cf0..eccfe8bd 100644
> --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c
> +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-module.c
> @@ -98,14 +98,12 @@ int libcfs_ioctl_popdata(void *arg, void *data, int size)
> static int
> libcfs_psdev_open(struct inode *inode, struct file *file)
> {
> - struct libcfs_device_userstate **pdu = NULL;
> int rc = 0;
>
> if (!inode)
> return -EINVAL;
> - pdu = (struct libcfs_device_userstate **)&file->private_data;
> if (libcfs_psdev_ops.p_open != NULL)
> - rc = libcfs_psdev_ops.p_open(0, (void *)pdu);
> + rc = libcfs_psdev_ops.p_open(0, NULL);
> else
> return -EPERM;
> return rc;
> @@ -115,14 +113,12 @@ libcfs_psdev_open(struct inode *inode, struct file *file)
> static int
> libcfs_psdev_release(struct inode *inode, struct file *file)
> {
> - struct libcfs_device_userstate *pdu;
> int rc = 0;
>
> if (!inode)
> return -EINVAL;
> - pdu = file->private_data;
> if (libcfs_psdev_ops.p_close != NULL)
> - rc = libcfs_psdev_ops.p_close(0, (void *)pdu);
> + rc = libcfs_psdev_ops.p_close(0, NULL);
> else
> rc = -EPERM;
> return rc;
> @@ -152,14 +148,8 @@ static long libcfs_ioctl(struct file *file,
> return -EPERM;
> panic("debugctl-invoked panic");
> return 0;
> - case IOC_LIBCFS_MEMHOG:
> - if (!capable(CFS_CAP_SYS_ADMIN))
> - return -EPERM;
> - /* go thought */
> }
>
> - pfile.off = 0;
> - pfile.private_data = file->private_data;
> if (libcfs_psdev_ops.p_ioctl != NULL)
> rc = libcfs_psdev_ops.p_ioctl(&pfile, cmd, (void *)arg);
> else
> diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
> index 329d78c..0067e53 100644
> --- a/drivers/staging/lustre/lustre/libcfs/module.c
> +++ b/drivers/staging/lustre/lustre/libcfs/module.c
> @@ -68,142 +68,16 @@ MODULE_LICENSE("GPL");
>
> static struct dentry *lnet_debugfs_root;
>
> -static void kportal_memhog_free(struct libcfs_device_userstate *ldu)
> -{
> - struct page **level0p = &ldu->ldu_memhog_root_page;
> - struct page **level1p;
> - struct page **level2p;
> - int count1;
> - int count2;
> -
> - if (*level0p != NULL) {
> -
> - level1p = (struct page **)page_address(*level0p);
> - count1 = 0;
> -
> - while (count1 < PAGE_CACHE_SIZE/sizeof(struct page *) &&
> - *level1p != NULL) {
> -
> - level2p = (struct page **)page_address(*level1p);
> - count2 = 0;
> -
> - while (count2 < PAGE_CACHE_SIZE/sizeof(struct page *) &&
> - *level2p != NULL) {
> -
> - __free_page(*level2p);
> - ldu->ldu_memhog_pages--;
> - level2p++;
> - count2++;
> - }
> -
> - __free_page(*level1p);
> - ldu->ldu_memhog_pages--;
> - level1p++;
> - count1++;
> - }
> -
> - __free_page(*level0p);
> - ldu->ldu_memhog_pages--;
> -
> - *level0p = NULL;
> - }
> -
> - LASSERT(ldu->ldu_memhog_pages == 0);
> -}
> -
> -static int kportal_memhog_alloc(struct libcfs_device_userstate *ldu, int npages,
> - gfp_t flags)
> -{
> - struct page **level0p;
> - struct page **level1p;
> - struct page **level2p;
> - int count1;
> - int count2;
> -
> - LASSERT(ldu->ldu_memhog_pages == 0);
> - LASSERT(ldu->ldu_memhog_root_page == NULL);
> -
> - if (npages < 0)
> - return -EINVAL;
> -
> - if (npages == 0)
> - return 0;
> -
> - level0p = &ldu->ldu_memhog_root_page;
> - *level0p = alloc_page(flags);
> - if (*level0p == NULL)
> - return -ENOMEM;
> - ldu->ldu_memhog_pages++;
> -
> - level1p = (struct page **)page_address(*level0p);
> - count1 = 0;
> - memset(level1p, 0, PAGE_CACHE_SIZE);
> -
> - while (ldu->ldu_memhog_pages < npages &&
> - count1 < PAGE_CACHE_SIZE/sizeof(struct page *)) {
> -
> - if (cfs_signal_pending())
> - return -EINTR;
> -
> - *level1p = alloc_page(flags);
> - if (*level1p == NULL)
> - return -ENOMEM;
> - ldu->ldu_memhog_pages++;
> -
> - level2p = (struct page **)page_address(*level1p);
> - count2 = 0;
> - memset(level2p, 0, PAGE_CACHE_SIZE);
> -
> - while (ldu->ldu_memhog_pages < npages &&
> - count2 < PAGE_CACHE_SIZE/sizeof(struct page *)) {
> -
> - if (cfs_signal_pending())
> - return -EINTR;
> -
> - *level2p = alloc_page(flags);
> - if (*level2p == NULL)
> - return -ENOMEM;
> - ldu->ldu_memhog_pages++;
> -
> - level2p++;
> - count2++;
> - }
> -
> - level1p++;
> - count1++;
> - }
> -
> - return 0;
> -}
> -
> /* called when opening /dev/device */
> static int libcfs_psdev_open(unsigned long flags, void *args)
> {
> - struct libcfs_device_userstate *ldu;
> -
> try_module_get(THIS_MODULE);
> -
> - LIBCFS_ALLOC(ldu, sizeof(*ldu));
> - if (ldu != NULL) {
> - ldu->ldu_memhog_pages = 0;
> - ldu->ldu_memhog_root_page = NULL;
> - }
> - *(struct libcfs_device_userstate **)args = ldu;
> -
> return 0;
> }
>
> /* called when closing /dev/device */
> static int libcfs_psdev_release(unsigned long flags, void *args)
> {
> - struct libcfs_device_userstate *ldu;
> -
> - ldu = (struct libcfs_device_userstate *)args;
> - if (ldu != NULL) {
> - kportal_memhog_free(ldu);
> - LIBCFS_FREE(ldu, sizeof(*ldu));
> - }
> -
> module_put(THIS_MODULE);
> return 0;
> }
> @@ -260,19 +134,6 @@ static int libcfs_ioctl_int(struct cfs_psdev_file *pfile, unsigned long cmd,
> return -EINVAL;
> libcfs_debug_mark_buffer(data->ioc_inlbuf1);
> return 0;
> - case IOC_LIBCFS_MEMHOG:
> - if (pfile->private_data == NULL) {
> - err = -EINVAL;
> - } else {
> - kportal_memhog_free(pfile->private_data);
> - /* XXX The ioc_flags is not GFP flags now, need to be fixed */
> - err = kportal_memhog_alloc(pfile->private_data,
> - data->ioc_count,
> - data->ioc_flags);
> - if (err != 0)
> - kportal_memhog_free(pfile->private_data);
> - }
> - break;
>
> default: {
> struct libcfs_ioctl_handler *hand;
> --
> 1.7.9.5

Sorry for the subject line. Please ignore this. I will resend with correct subject.

Regards,
Niranjan --
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/