[Pvfs2-cvs] commit by kunkel in pvfs2/src/proto:
PINT-le-bytefield.c endecode-funcs.h pvfs2-req-proto.h
CVS commit program
cvs at parl.clemson.edu
Sat Aug 26 09:37:47 EDT 2006
Update of /projects/cvsroot/pvfs2/src/proto
In directory parlweb1:/tmp/cvs-serv11028/src/proto
Modified Files:
Tag: kunkel-branch
PINT-le-bytefield.c endecode-funcs.h pvfs2-req-proto.h
Log Message:
Migration of datafiles between different servers works. Uses msgpairray.sm,
transfers only one datafile between two servers and rewrites metadata.
Todo: Adaption of request scheduler to ensure that migration and write
I/O do not happen concurrently on source dataserver.
Also allow users to specify command line parameter which supresses
transfer of pvfs2-hints.
Index: PINT-le-bytefield.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/proto/PINT-le-bytefield.c,v
diff -p -u -r1.41.4.4 -r1.41.4.5
--- PINT-le-bytefield.c 22 Aug 2006 10:54:20 -0000 1.41.4.4
+++ PINT-le-bytefield.c 26 Aug 2006 13:37:47 -0000 1.41.4.5
@@ -105,10 +105,6 @@ static void lebf_initialize(void)
case PVFS_SERV_REMOVE:
/* nothing special, let normal encoding work */
break;
- case PVFS_SERV_MGMT_MIGRATE:
- req.u.mgmt_migrate.new_datafile_extent_array.extent_count = 0;
- reqsize = extra_size_PVFS_servreq_mgmt_migrate;
- break;
case PVFS_SERV_MGMT_REMOVE_OBJECT:
/* nothing special, let normal encoding work */
break;
@@ -121,12 +117,12 @@ static void lebf_initialize(void)
req.u.io.file_req = &tmp_req;
reqsize = extra_size_PVFS_servreq_io;
break;
- case PVFS_SERV_SMALL_IO:
- req.u.small_io.dist = &tmp_dist;
- req.u.small_io.file_req = &tmp_req;
- reqsize = extra_size_PVFS_servreq_small_io;
- respsize = extra_size_PVFS_servresp_small_io;
- break;
+ case PVFS_SERV_SMALL_IO:
+ req.u.small_io.dist = &tmp_dist;
+ req.u.small_io.file_req = &tmp_req;
+ reqsize = extra_size_PVFS_servreq_small_io;
+ respsize = extra_size_PVFS_servresp_small_io;
+ break;
case PVFS_SERV_GETATTR:
resp.u.getattr.attr.mask = 0;
respsize = extra_size_PVFS_servresp_getattr;
@@ -160,6 +156,8 @@ static void lebf_initialize(void)
resp.u.readdir.dirent_count = 0;
respsize = extra_size_PVFS_servresp_readdir;
break;
+ case PVFS_SERV_MGMT_MIGRATE:
+ break;
case PVFS_SERV_FLUSH:
/* nothing special */
break;
@@ -447,7 +445,6 @@ static int lebf_encode_resp(
CASE(PVFS_SERV_MKDIR, mkdir);
CASE(PVFS_SERV_READDIR, readdir);
CASE(PVFS_SERV_STATFS, statfs);
- CASE(PVFS_SERV_MGMT_MIGRATE, mgmt_migrate);
CASE(PVFS_SERV_MGMT_SETPARAM, mgmt_setparam);
CASE(PVFS_SERV_MGMT_PERF_MON, mgmt_perf_mon);
CASE(PVFS_SERV_MGMT_ITERATE_HANDLES, mgmt_iterate_handles);
@@ -457,7 +454,8 @@ static int lebf_encode_resp(
CASE(PVFS_SERV_MGMT_GET_DIRDATA_HANDLE, mgmt_get_dirdata_handle);
CASE(PVFS_SERV_GETEATTR, geteattr);
CASE(PVFS_SERV_LISTEATTR, listeattr);
-
+
+ case PVFS_SERV_MGMT_MIGRATE:
case PVFS_SERV_REMOVE:
case PVFS_SERV_MGMT_REMOVE_OBJECT:
case PVFS_SERV_MGMT_REMOVE_DIRENT:
@@ -632,7 +630,6 @@ static int lebf_decode_resp(
CASE(PVFS_SERV_MKDIR, mkdir);
CASE(PVFS_SERV_READDIR, readdir);
CASE(PVFS_SERV_STATFS, statfs);
- CASE(PVFS_SERV_MGMT_MIGRATE, mgmt_migrate);
CASE(PVFS_SERV_MGMT_SETPARAM, mgmt_setparam);
CASE(PVFS_SERV_MGMT_PERF_MON, mgmt_perf_mon);
CASE(PVFS_SERV_MGMT_ITERATE_HANDLES, mgmt_iterate_handles);
@@ -643,6 +640,7 @@ static int lebf_decode_resp(
CASE(PVFS_SERV_GETEATTR, geteattr);
CASE(PVFS_SERV_LISTEATTR, listeattr);
+ case PVFS_SERV_MGMT_MIGRATE:
case PVFS_SERV_REMOVE:
case PVFS_SERV_MGMT_REMOVE_OBJECT:
case PVFS_SERV_MGMT_REMOVE_DIRENT:
@@ -723,10 +721,10 @@ static void lebf_decode_rel(struct PINT_
decode_free(req->u.io.file_req);
break;
- case PVFS_SERV_SMALL_IO:
- decode_free(req->u.small_io.dist);
- decode_free(req->u.small_io.file_req);
- break;
+ case PVFS_SERV_SMALL_IO:
+ decode_free(req->u.small_io.dist);
+ decode_free(req->u.small_io.file_req);
+ break;
case PVFS_SERV_MKDIR:
decode_free(req->u.mkdir.handle_extent_array.extent_array);
@@ -735,9 +733,6 @@ static void lebf_decode_rel(struct PINT_
if (req->u.mkdir.attr.mask & PVFS_ATTR_META_DFILES)
decode_free(req->u.mkdir.attr.u.meta.dfile_array);
break;
- case PVFS_SERV_MGMT_MIGRATE:
- decode_free(req->u.mgmt_migrate.new_datafile_extent_array.extent_array);
- break;
case PVFS_SERV_MGMT_DSPACE_INFO_LIST:
decode_free(req->u.mgmt_dspace_info_list.handle_array);
break;
@@ -748,7 +743,8 @@ static void lebf_decode_rel(struct PINT_
if (req->u.setattr.attr.mask & PVFS_ATTR_META_DFILES)
decode_free(req->u.setattr.attr.u.meta.dfile_array);
break;
-
+
+ case PVFS_SERV_MGMT_MIGRATE:
case PVFS_SERV_GETCONFIG:
case PVFS_SERV_LOOKUP_PATH:
case PVFS_SERV_REMOVE:
Index: endecode-funcs.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/proto/endecode-funcs.h,v
diff -p -u -r1.18 -r1.18.4.1
--- endecode-funcs.h 16 Jun 2006 21:01:15 -0000 1.18
+++ endecode-funcs.h 26 Aug 2006 13:37:47 -0000 1.18.4.1
@@ -232,6 +232,28 @@ static inline void decode_##name(char **
#define endecode_fields_5_struct(name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5) \
endecode_fields_5_generic(name, struct name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5)
+#define endecode_fields_6_generic(name, sname, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5, t6, x6) \
+static inline void encode_##name(char **pptr, const sname *x) { \
+ encode_##t1(pptr, &x->x1); \
+ encode_##t2(pptr, &x->x2); \
+ encode_##t3(pptr, &x->x3); \
+ encode_##t4(pptr, &x->x4); \
+ encode_##t5(pptr, &x->x5); \
+ encode_##t6(pptr, &x->x6); \
+} \
+static inline void decode_##name(char **pptr, sname *x) { \
+ decode_##t1(pptr, &x->x1); \
+ decode_##t2(pptr, &x->x2); \
+ decode_##t3(pptr, &x->x3); \
+ decode_##t4(pptr, &x->x4); \
+ decode_##t5(pptr, &x->x5); \
+ decode_##t6(pptr, &x->x6); \
+}
+#define endecode_fields_6(name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5, t6, x6) \
+ endecode_fields_6_generic(name, name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5, t6, x6)
+#define endecode_fields_6_struct(name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5, t6, x6) \
+ endecode_fields_6_generic(name, struct name, t1, x1, t2, x2, t3, x3, t4, x4, t5, x5, t6, x6)
+
#define endecode_fields_7(name,t1,x1,t2,x2,t3,x3,t4,x4,t5,x5,t6,x6,t7,x7) \
static inline void encode_##name(char **pptr, const name *x) { \
encode_##t1(pptr, &x->x1); \
Index: pvfs2-req-proto.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/proto/pvfs2-req-proto.h,v
diff -p -u -r1.140.4.4 -r1.140.4.5
--- pvfs2-req-proto.h 22 Aug 2006 10:54:20 -0000 1.140.4.4
+++ pvfs2-req-proto.h 26 Aug 2006 13:37:47 -0000 1.140.4.5
@@ -202,17 +202,6 @@ endecode_fields_1_struct(
PVFS_servresp_create,
PVFS_handle, handle)
-/*
- * New datafile handle
- */
-struct PVFS_servresp_mgmt_migrate
-{
- PVFS_handle handle;
-};
-endecode_fields_1_struct(
- PVFS_servresp_mgmt_migrate,
- PVFS_handle, handle)
-
/* remove *****************************************************/
/* - used to remove an existing metafile or datafile object */
@@ -938,42 +927,61 @@ endecode_fields_1_struct(
struct PVFS_servreq_mgmt_migrate
{
- PVFS_handle handle;
- PVFS_fs_id fs_id;
-
- PVFS_handle datafile_handle;
- PVFS_handle_extent_array new_datafile_extent_array;
+ PVFS_fs_id fs_id;
+ PVFS_handle handle; /* we operate with this one !*/
+ PVFS_handle old_datafile_handle;
+ PVFS_handle new_datafile_handle;
+ PVFS_handle metafile_handle;
+ int32_t role; /* metaserver, source or target*/
};
-endecode_fields_4_struct(
+
+endecode_fields_6_struct(
PVFS_servreq_mgmt_migrate,
+ PVFS_fs_id, fs_id,
PVFS_handle, handle,
- PVFS_fs_id, fs_id,
- PVFS_handle, datafile_handle,
- PVFS_handle_extent_array, new_datafile_extent_array)
-#define extra_size_PVFS_servreq_mgmt_migrate \
- (PVFS_REQ_LIMIT_HANDLES_COUNT * sizeof(PVFS_handle_extent))
+ PVFS_handle, old_datafile_handle,
+ PVFS_handle, new_datafile_handle,
+ PVFS_handle, metafile_handle,
+ int32_t, role)
-#define PINT_SERVREQ_MGMT_MIGRATE_FILL(__req, \
+enum migrate_role{
+ PVFS_MIGRATE_ROLE_METASERVER = 5,
+ PVFS_MIGRATE_ROLE_SOURCE_DATA_SERVER = 6
+};
+
+#define PINT_SERVREQ_MGMT_MIGRATE_FILL(__req, \
__creds, \
- __handle, \
__fsid, \
- __data_handle, \
- __ext_array, \
+ __metafile_handle, \
+ __old_datafile_handle,\
+ __new_datafile_handle,\
+ __role, \
__hints) \
do { \
memset(&(__req), 0, sizeof(__req)); \
- (__req).op = PVFS_SERV_CREATE; \
+ (__req).op = PVFS_SERV_MGMT_MIGRATE; \
(__req).hints = (__hints); \
(__req).credentials = (__creds); \
(__req).u.mgmt_migrate.fs_id = (__fsid); \
- (__req).u.mgmt_migrate.handle = (__handle); \
- (__req).u.mgmt_migrate.datafile_handle = (__data_handle); \
- (__req).u.mgmt_migrate.new_datafile_extent_array.extent_count =\
- (__ext_array).extent_count; \
- (__req).u.mgmt_migrate.new_datafile_extent_array.extent_array =\
- (__ext_array).extent_array; \
+ (__req).u.mgmt_migrate.old_datafile_handle = \
+ (__old_datafile_handle); \
+ (__req).u.mgmt_migrate.new_datafile_handle = \
+ (__new_datafile_handle); \
+ (__req).u.mgmt_migrate.metafile_handle = \
+ (__metafile_handle); \
+ (__req).u.mgmt_migrate.role = __role; \
+ switch(__role){ \
+ case PVFS_MIGRATE_ROLE_METASERVER: \
+ (__req).u.mgmt_migrate.handle = __metafile_handle;\
+ break; \
+ case PVFS_MIGRATE_ROLE_SOURCE_DATA_SERVER: \
+ (__req).u.mgmt_migrate.handle = __old_datafile_handle;\
+ break; \
+ default: \
+ assert(0); \
+ } \
} while (0)
-
+
struct PVFS_servreq_small_io
{
@@ -1646,7 +1654,6 @@ struct PVFS_server_resp
struct PVFS_servresp_mgmt_dspace_info_list mgmt_dspace_info_list;
struct PVFS_servresp_mgmt_event_mon mgmt_event_mon;
struct PVFS_servresp_mgmt_get_dirdata_handle mgmt_get_dirdata_handle;
- struct PVFS_servresp_mgmt_migrate mgmt_migrate;
struct PVFS_servresp_geteattr geteattr;
struct PVFS_servresp_listeattr listeattr;
struct PVFS_servresp_small_io small_io;
More information about the Pvfs2-cvs
mailing list