| To: | Dean Roehrich <roehrich@xxxxxxx> |
|---|---|
| Subject: | Re: [DMAPI] code error in dm_ip_to_handle() |
| From: | Aurelien Degremont - Stagiaire <degremont@xxxxxxxxxxx> |
| Date: | Wed, 18 May 2005 15:06:23 +0200 |
| Cc: | linux-xfs@xxxxxxxxxxx |
| In-reply-to: | <20050518014742.EBD074FE8A@chewtoy.americas.sgi.com> |
| References: | <20050518014742.EBD074FE8A@chewtoy.americas.sgi.com> |
| Sender: | linux-xfs-bounce@xxxxxxxxxxx |
| User-agent: | Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.2.1) Gecko/20030225 |
Dean Roehrich a écrit:
Can you give me a patch for the library to convert it from xfs_fid2_t to dm_fid_t?
(I guess) In order to be sure the fsid is not null, you test the 32-bits MSB against 0 and the 32-bits LSB against 0, of the fsid. if (!handle.ha_fsid.val[0] || !handle.ha_fsid.val[1])
return(DM_HANDLE_BAD);If my fsid is, by example, "0x00000000000009F4A", it is correct ? But this test will detect the left part is null and so declares it BAD. So I changed the test to verify only, the fsid value is not null. if (! handle.ha_fsid)
return(DM_HANDLE_BAD);Aurelien diff -u libdm.orig/dm_handle.c libdm/dm_handle.c
--- libdm.orig/dm_handle.c 2005-05-18 09:54:42.000000000 +0200
+++ libdm/dm_handle.c 2005-05-18 13:00:20.000000000 +0200
@@ -32,8 +32,8 @@
*/
#ifdef linux
-#include <xfs/libxfs.h>
-#include <xfs/handle.h>
+#include <xfs/libxfs.h> /* Do we really need those includes ? */
+#include <xfs/handle.h>
#else
#include <sys/handle.h>
#include <errno.h>
@@ -153,8 +153,8 @@
dm_ino_t *inop,
dm_igen_t *igenp)
{
- xfs_handle_t handle;
- xfs_fid2_t *xfid2;
+ dm_handle_t handle;
+ dm_fid_t *dmfid;
fid_t *fidp;
if (hanp == DM_GLOBAL_HANP && hlen == DM_GLOBAL_HLEN)
@@ -164,7 +164,7 @@
return(DM_HANDLE_BAD);
memcpy(&handle, hanp, hlen);
- if (!handle.ha_fsid.val[0] || !handle.ha_fsid.val[1])
+ if (! handle.ha_fsid)
return(DM_HANDLE_BAD);
if (fsidp)
memcpy(fsidp, &handle.ha_fsid, sizeof(handle.ha_fsid));
@@ -176,18 +176,18 @@
if (fidp->fid_len != (hlen - sizeof(handle.ha_fsid) -
sizeof(fidp->fid_len)))
return(DM_HANDLE_BAD);
#else
- if (handle.ha_fid.fid_len != (hlen - sizeof(handle.ha_fsid) -
sizeof(handle.ha_fid.fid_len)))
+ if (handle.ha_fid.dm_fid_len != (hlen - sizeof(handle.ha_fsid) -
sizeof(handle.ha_fid.dm_fid_len)))
return(DM_HANDLE_BAD);
#endif
- xfid2 = (struct xfs_fid2 *)&handle.ha_fid;
- if (xfid2->fid_len == sizeof *xfid2 - sizeof xfid2->fid_len) {
- if (xfid2->fid_pad)
+ dmfid = (struct dm_fid_t *)&handle.ha_fid;
+ if (dmfid->dm_fid_len == sizeof *dmfid - sizeof dmfid->dm_fid_len) {
+ if (dmfid->dm_fid_pad)
return(DM_HANDLE_BAD);
if (inop)
- *inop = xfid2->fid_ino;
+ *inop = dmfid->dm_fid_ino;
if (igenp)
- *igenp = xfid2->fid_gen;
+ *igenp = dmfid->dm_fid_gen;
} else {
return(DM_HANDLE_BAD);
}
@@ -291,17 +291,17 @@
void **hanpp,
size_t *hlenp)
{
- xfs_fid2_t *xfid2;
+ dm_fid_t *fid;
/* XXX */
- xfs_handle_t handle;
+ dm_handle_t handle;
memcpy(&handle.ha_fsid, fsidp, sizeof(handle.ha_fsid));
- xfid2 = (struct xfs_fid2 *)&handle.ha_fid;
- xfid2->fid_pad = 0;
- xfid2->fid_gen = (__u32)*igenp;
- xfid2->fid_ino = *inop;
- xfid2->fid_len = sizeof(*xfid2) - sizeof(xfid2->fid_len);
- *hlenp = sizeof(*xfid2) + sizeof(handle.ha_fsid);
+ fid = (struct dm_fid *)&handle.ha_fid;
+ fid->dm_fid_pad = 0;
+ fid->dm_fid_gen = (__u32)*igenp;
+ fid->dm_fid_ino = *inop;
+ fid->dm_fid_len = sizeof(*fid) - sizeof(fid->dm_fid_len);
+ *hlenp = sizeof(*fid) + sizeof(handle.ha_fsid);
if ((*hanpp = malloc(*hlenp)) == NULL) {
errno = ENOMEM;
return -1;
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | TAKE 936255 - mark various symbols static, Christoph Hellwig |
|---|---|
| Next by Date: | Files >4GB in XFS realtime partition, James Chapman |
| Previous by Thread: | Re: [DMAPI] code error in dm_ip_to_handle(), Dean Roehrich |
| Next by Thread: | Re: [DMAPI] code error in dm_ip_to_handle(), Dean Roehrich |
| Indexes: | [Date] [Thread] [Top] [All Lists] |