On 2015/12/23, 02:40, "Dighe, Niranjan (N.)" <ndighe@xxxxxxxxxxx> 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> Thanks for the patch. Reviewed-by: Andreas Dilger <andreas.dilger@xxxxxxxxx> >--- > .../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 > Cheers, Andreas -- Andreas Dilger Lustre Principal Architect Intel High Performance Data Division _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel