[Ocfs2-users] OCFS2 and Snapshots
Andre Brinkmann
brinkman at hni.upb.de
Fri Jul 21 13:19:54 CDT 2006
I hope this patch is in a better "diff -u -p"-format :-)
Patch for the Makefile
===============
--- tunefs.ocfs2/Makefile 2006-04-21 23:40:29.000000000 +0200
+++ tunefs.ocfs2_new/Makefile 2006-07-21 14:29:48.000000000 +0200
@@ -36,6 +36,6 @@ OBJS = $(subst .c,.o,$(CFILES))
DIST_FILES = $(CFILES) tunefs.ocfs2.8.in
tunefs.ocfs2: $(OBJS) $(LIBOCFS2_DEPS) $(LIBO2DLM_DEPS) $(LIBO2CB_DEPS)
- $(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS)
$(COM_ERR_LIBS)
+ $(LINK) $(LIBOCFS2_LIBS) $(UUID_LIBS) $(LIBO2DLM_LIBS)
$(LIBO2CB_LIBS) $(COM_ERR_LIBS)
include $(TOPDIR)/Postamble.make
Patch for tunefs-c
============
--- tunefs.ocfs2/tunefs.c 2006-04-21 23:40:29.000000000 +0200
+++ tunefs.ocfs2_new/tunefs.c 2006-07-21 14:25:19.000000000 +0200
@@ -44,6 +44,7 @@
#include <inttypes.h>
#include <ctype.h>
#include <signal.h>
+#include <uuid/uuid.h>
#include <ocfs2.h>
#include <ocfs2_fs.h>
@@ -70,6 +71,7 @@ typedef struct _ocfs2_tune_opts {
char *progname;
char *device;
int verbose;
+ int uuid;
int quiet;
int prompt;
time_t tune_time;
@@ -84,7 +86,7 @@ static void usage(const char *progname)
{
fprintf(stderr, "usage: %s [-N number-of-node-slots] "
"[-L volume-label]\n"
- "\t[-J journal-options] [-S volume-size] [-qvV] "
+ "\t[-J journal-options] [-S volume-size] [-qvuV] "
"device\n",
progname);
exit(0);
@@ -242,6 +244,7 @@ static void get_options(int argc, char *
{ "quiet", 0, 0, 'q' },
{ "version", 0, 0, 'V' },
{ "journal-options", 0, 0, 'J'},
+ { "uuid-reset", 0, 0, 'u'},
{ "volume-size", 0, 0, 'S'},
{ 0, 0, 0, 0}
};
@@ -254,7 +257,7 @@ static void get_options(int argc, char *
opts.prompt = 1;
while (1) {
- c = getopt_long(argc, argv, "L:N:J:S:vqVx", long_options,
+ c = getopt_long(argc, argv, "L:N:J:S:vquVx", long_options,
NULL);
if (c == -1)
@@ -303,6 +306,10 @@ static void get_options(int argc, char *
opts.vol_size = val;
break;
+ case 'u':
+ opts.uuid = 1;
+ break;
+
case 'v':
opts.verbose = 1;
break;
@@ -471,6 +478,38 @@ static void update_volume_label(ocfs2_fi
return ;
}
+
+static void update_uuid (ocfs2_filesys *fs, int *changed)
+{
+ unsigned char *uuid = OCFS2_RAW_SB(fs->fs_super)->s_uuid;
+ size_t i, max = sizeof(OCFS2_RAW_SB(fs->fs_super)->s_uuid);
+ uuid_t uuid_new;
+
+ /* print out old uuid of device */
+ printf ("Try to change uuid: \n");
+ for(i = 0; i < max; i++)
+ printf("%02x ", uuid[i]);
+
+ printf("\n");
+
+ /* generate new uuid */
+ uuid_generate(uuid_new);
+
+ memset (OCFS2_RAW_SB(fs->fs_super)->s_uuid, 0, OCFS2_VOL_UUID_LEN);
+ memcpy (OCFS2_RAW_SB(fs->fs_super)->s_uuid, uuid_new,
OCFS2_VOL_UUID_LEN);
+
+ /* print out new uuid */
+ printf ("New uuid: \n");
+ for(i = 0; i < max; i++)
+ printf("%02x ", uuid[i]);
+
+ printf("\n");
+
+ *changed = 1;
+
+ return ;
+}
+
static errcode_t update_slots(ocfs2_filesys *fs, int *changed)
{
errcode_t ret = 0;
@@ -553,6 +592,7 @@ int main(int argc, char **argv)
errcode_t ret = 0;
ocfs2_filesys *fs = NULL;
int upd_label = 0;
+ int upd_uuid = 0;
int upd_slots = 0;
int upd_jrnls = 0;
int upd_vsize = 0;
@@ -674,6 +714,10 @@ int main(int argc, char **argv)
vol_size, opts.vol_size);
}
+ /* update unique serial number of device has been selected */
+ if (opts.uuid)
+ printf (" Change unique serial number of device \n ");
+
/* Abort? */
if (opts.prompt) {
printf("Proceed (y/N): ");
@@ -690,6 +734,13 @@ int main(int argc, char **argv)
printf("Changed volume label\n");
}
+ /* update the unique serial number */
+ if (opts.uuid) {
+ update_uuid (fs, &upd_uuid);
+ if (upd_uuid)
+ printf ("Changed volume uuid \n");
+ }
+
/* update number of slots */
if (opts.num_slots) {
ret = update_slots(fs, &upd_slots);
@@ -726,7 +777,7 @@ int main(int argc, char **argv)
}
/* write superblock */
- if (upd_label || upd_slots || upd_vsize) {
+ if (upd_label || upd_slots || upd_vsize || upd_uuid) {
block_signals(SIG_BLOCK);
ret = ocfs2_write_super(fs);
if (ret) {
Sunil Mushran wrote:
> Please could you send it to me again in the "diff -u -p" format.
>
> Andre Brinkmann wrote:
>> Sorry,
>>
>> here the patch as text:
>>
>> For the Makefile:
>>
>> 39c39
>> < $(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS)
>> $(COM_ERR_LIBS)
>> ---
>> > $(LINK) $(LIBOCFS2_LIBS) $(UUID_LIBS) $(LIBO2DLM_LIBS)
>> $(LIBO2CB_LIBS) $(COM_ERR_LIBS)
>>
>>
>> For tunefs.ocfs2.c:
>>
>> 46a47
>> > #include <uuid/uuid.h>
>> 72a74
>> > int uuid;
>> 87c89
>> < "\t[-J journal-options] [-S volume-size] [-qvV] "
>> ---
>> > "\t[-J journal-options] [-S volume-size] [-qvuV] "
>> 244a247
>> > { "uuid-reset", 0, 0, 'u'},
>> 257c260
>> < c = getopt_long(argc, argv, "L:N:J:S:vqVx", long_options,
>> ---
>> > c = getopt_long(argc, argv, "L:N:J:S:vquVx", long_options,
>> 305a309,312
>> > case 'u':
>> > opts.uuid = 1;
>> > break;
>> >
>> 473a481,512
>> >
>> > static void update_uuid (ocfs2_filesys *fs, int *changed)
>> > {
>> > unsigned char *uuid = OCFS2_RAW_SB(fs->fs_super)->s_uuid;
>> > size_t i, max = sizeof(OCFS2_RAW_SB(fs->fs_super)->s_uuid);
>> > uuid_t uuid_new;
>> >
>> > /* print out old uuid of device */
>> > printf ("Try to change uuid: \n");
>> > for(i = 0; i < max; i++)
>> > printf("%02x ", uuid[i]);
>> >
>> > printf("\n");
>> >
>> > /* generate new uuid */
>> > uuid_generate(uuid_new); >
>> > memset (OCFS2_RAW_SB(fs->fs_super)->s_uuid, 0,
>> OCFS2_VOL_UUID_LEN);
>> > memcpy (OCFS2_RAW_SB(fs->fs_super)->s_uuid, uuid_new,
>> OCFS2_VOL_UUID_LEN);
>> > > /* print out new uuid */
>> > printf ("New uuid: \n");
>> > for(i = 0; i < max; i++)
>> > printf("%02x ", uuid[i]);
>> >
>> > printf("\n");
>> > > *changed = 1;
>> >
>> > return ;
>> > }
>> >
>> 555a595
>> > int upd_uuid = 0;
>> 676a717,720
>> > /* update unique serial number of device has been selected */
>> > if (opts.uuid)
>> > printf (" Change unique serial number of device \n
>> ");
>> >
>> 692a737,743
>> > /* update the unique serial number */
>> > if (opts.uuid) {
>> > update_uuid (fs, &upd_uuid);
>> > if (upd_uuid)
>> > printf ("Changed volume uuid \n");
>> > }
>> >
>> 729c780
>> < if (upd_label || upd_slots || upd_vsize) {
>> ---
>> > if (upd_label || upd_slots || upd_vsize || upd_uuid) {
>>
>>
>> _______________________________________________
>> Ocfs2-users mailing list
>> Ocfs2-users at oss.oracle.com
>> http://oss.oracle.com/mailman/listinfo/ocfs2-users
>>
More information about the Ocfs2-users
mailing list