+ if (bitmap_file && vers < 9003) {
+ major_num = BITMAP_MAJOR_HOSTENDIAN;
+#ifdef __BIG_ENDIAN
+ fprintf(stderr, Name ": Warning - bitmaps created on this kernel are not portable\n"
+ " between different architectured. Consider upgrading the Linux kernel.\n");
+#endif
+ }
+
+ if (bitmap_file && strcmp(bitmap_file, "internal")==0) {
+ if ((vers%100) < 2) {
+ fprintf(stderr, Name ": internal bitmaps not supported by this kernel.\n");
+ return 1;
+ }
+ if (!st->ss->add_internal_bitmap(st, &bitmap_chunk,
+ delay, write_behind,
+ bitmapsize, 1, major_num)) {
+ fprintf(stderr, Name ": Given bitmap chunk size not supported.\n");
+ return 1;
+ }
+ bitmap_file = NULL;
+ }
+
+
+ sra = sysfs_read(mdfd, 0, 0);
+
+ if (st->ss->external) {
+ char ver[100];
+ if (st->ss->external == 1)
+ /* container */
+ strcat(strcpy(ver, "external:"), st->ss->text_version);
+ else {
+ /* member */
+ sprintf(ver, "external:/%s/%d",
+ devnum2devname(st->container_dev),
+ st->container_member);
+ }
+ if ((vers % 100) < 2 ||
+ sra == NULL ||
+ sysfs_set_str(sra, NULL, "metadata_version",
+ ver) < 0) {
+ fprintf(stderr, Name ": This kernel does not "
+ "support external metadata.\n");
+ return 1;
+ }
+ rv = sysfs_set_array(sra, &info);
+ } else if ((vers % 100) >= 1) { /* can use different versions */