mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 09:01:36 -04:00
staging: lustre: Remove unused memhog functionality
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@visteon.com> Acked-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
305b37bd01
commit
de01e10c15
@@ -387,11 +387,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user