X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Futil%2Fl_ioctl.c;h=89b1626177888912e06537051d4bc9a104c9cf2a;hb=refs%2Fchanges%2F74%2F13174%2F2;hp=e27c4041241eeef7a3e99047f2cf7284b5db79ca;hpb=a9ab51fcbd1b4dbe4c23ff774782d598f6f91ffa;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/util/l_ioctl.c b/libcfs/libcfs/util/l_ioctl.c index e27c404..89b1626 100644 --- a/libcfs/libcfs/util/l_ioctl.c +++ b/libcfs/libcfs/util/l_ioctl.c @@ -1,6 +1,8 @@ /* * Copyright (C) 2001, 2002 Cluster File Systems, Inc. * + * Copyright (c) 2014, Intel Corporation. + * * This file is part of Portals, http://www.sf.net/projects/lustre/ * * Portals is free software; you can redistribute it and/or @@ -20,6 +22,8 @@ #define __USE_FILE_OFFSET64 +#include +#include #include #include @@ -340,3 +344,21 @@ int libcfs_ioctl_pack(struct libcfs_ioctl_data *data, char **pbuf, return 0; } +void +libcfs_ioctl_unpack(struct libcfs_ioctl_data *data, char *pbuf) +{ + struct libcfs_ioctl_data *overlay = (struct libcfs_ioctl_data *)pbuf; + char *ptr; + + /* Preserve the caller's buffer pointers */ + overlay->ioc_inlbuf1 = data->ioc_inlbuf1; + overlay->ioc_inlbuf2 = data->ioc_inlbuf2; + + memcpy(data, pbuf, sizeof(*data)); + ptr = &overlay->ioc_bulk[0]; + + if (data->ioc_inlbuf1 != NULL) + LOGU(data->ioc_inlbuf1, data->ioc_inllen1, ptr); + if (data->ioc_inlbuf2 != NULL) + LOGU(data->ioc_inlbuf2, data->ioc_inllen2, ptr); +}