Git Product home page Git Product logo

ocfs2-tools's Introduction

These are tools for the OCFS2 filesystem.

ocfs2-tools's People

Contributors

atomictoaster avatar biger410 avatar chuanchang avatar danielsobe avatar elbie1 avatar ganghe avatar goldwynr avatar gtmoth avatar guojia1992 avatar jankara avatar jeffmahoney avatar jjzhang avatar jlaine avatar josephhz avatar junpiaohw avatar kastixx avatar kchackel avatar markfasheh avatar seeda avatar steffengy avatar vvidic avatar wangjian-92 avatar wangyan0507 avatar zhaohem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ocfs2-tools's Issues

ocfs2console: array index out of bounds risk in testing code

There is a risk of array index out of bounds in the main functions of files blkid/cache.c, blkid/save.c, and blkid/read.c. When argc is greater than 2, the test program prints an error log and exits. If the second parameter is not entered when executing the command, argc is 1 and the parameter verification can be passed. In the following code, an array index out of bounds error occurs when using argv[1] to obtain a value.

For example, in the code in blkid/save.c, if argc equals 1, the array index is out of bounds on line 182.

#ifdef TEST_PROGRAM
int main(int argc, char **argv)
{
	blkid_cache cache = NULL;
	int ret;

	blkid_debug_mask = DEBUG_ALL;
	if (argc > 2) {
		fprintf(stderr, "Usage: %s [filename]\n"
			"Test loading/saving a cache (filename)\n", argv[0]);
		exit(1);
	}

	if ((ret = blkid_get_cache(&cache, "/dev/null")) != 0) {
		fprintf(stderr, "%s: error creating cache (%d)\n",
			argv[0], ret);
		exit(1);
	}
	if ((ret = blkid_probe_all(cache)) < 0) {
		fprintf(stderr, "error (%d) probing devices\n", ret);
		exit(1);
	}
	cache->bic_filename = blkid_strdup(argv[1]); //  line 182
	
	if ((ret = blkid_flush_cache(cache)) < 0) {
		fprintf(stderr, "error (%d) saving cache\n", ret);
		exit(1);
	}

	blkid_put_cache(cache);

	return ret;
}
#endif

I think the '>' in these main functions should be replaced with '<', which means the number of parameters must be greater than or equal to 2.

defragfs.ocfs2 segfaults

It seems like defragfs binary added in the 1.8.6 release always segfaults:

# defragfs.ocfs2 /tmp
defragfs.ocfs2 1.8.6
"/tmp":Not within ocfs2 fs
Failed to get file info:: Bad address
Segmentation fault

For some reason it thinks there is an additional parameter after /tmp and tries to access an invalid address there.

incorrect FSF address in several source files

I build rpms of ocfs2-tools on Fedora, and run rpmlint over them. rpmlint reports several files use incorrect FSF address.

ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/init.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/console.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/about.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/format.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/bosa.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/partitionview.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/classlabel.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/process.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/pushconfig.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/terminal.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/confdefs.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/fstab.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/toolbar.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/ipwidget.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/menu.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/nodeconfig.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/guiutil.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/mount.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/fswidgets.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/general.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/ls.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/tune.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/fsck.py
ocfs2console.x86_64: E: incorrect-fsf-address /usr/lib64/python2.7/site-packages/ocfs2interface/o2cb_ctl.py
ocfs2-tools.x86_64: E: incorrect-fsf-address /usr/share/doc/ocfs2-tools/COPYING
ocfs2-tools-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/ocfs2-tools-ocfs2-tools-1.8.5/include/ocfs2/kernel-rbtree.h
ocfs2-tools-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/ocfs2-tools-ocfs2-tools-1.8.5/libocfs2/kernel-rbtree.c
ocfs2-tools-devel.x86_64: E: incorrect-fsf-address /usr/include/ocfs2/kernel-rbtree.h

fsck.ocfs2/include/strings.h conflicts with system header from glibc master (2.27)

Fedora rawhide(28)
glibc-2.26.90-14.fc28.x86_64

# cd fsck.ocfs2
# gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -pipe    -I../include -Iinclude  -DVERSION=\"1.8.5\"  -MD -MP -MF ./.pass4.d -o pass4.o -c pass4.c
In file included from /usr/include/string.h:431:0,
                 from ../include/ocfs2/ocfs2.h:41,
                 from pass4.c:32:
include/strings.h:37:1: error: unknown type name ‘errcode_t’; did you mean ‘mode_t’?
 errcode_t o2fsck_strings_insert(o2fsck_strings *strings, char *string,
 ^~~~~~~~~
 mode_t

/usr/include/string.h includes <strings.h> from fsck.ocfs2/include/strings.h.

A fix may be renaming fsck.ocfs2/include/strings.h.

o2cb service doesn't have online/offline/configure commands on Ubuntu 20.04 LTS

On Ubuntu 20.04 the service o2cb has some important commands missing, such as online, offline, and configure. The issue doesn't happen on Ubuntu 18.04 and below.

Ubuntu 18.04:

$ o2cb --version
o2cb 1.8.5
$ sudo service o2cb something
Usage: /etc/init.d/o2cb {start|stop|restart|force-reload|enable|disable|configure|load|unload|online|offline|force-offline|status|online-status}

Ubuntu 20.04:

$ o2cb --version
o2cb 1.8.6
$ sudo service o2cb online
Usage: /etc/init.d/o2cb {start|stop|status|restart|try-restart|force-reload}

In both cases I installed o2cb via:

$ sudo apt-get update && sudo apt-get install ocfs2-tools -y

Is there something I am missing? The manpage for Ubuntu 20.04 does mention the online command.

`make` errors out with random error on first run

Hello,

I'm trying to build version 1.8.5 as packaged in the release tarball for it on Arch Linux,
but it always errors out in the first run of the Makefile and succeeds in the second one.
The errors occur when I try to compile with -j1 or with the number of workers as the number of threads on the system.

/usr/bin/python is python3
automake -v 1.15
gcc -v .3.1
Shell is bash.
CFLAGS="-march=native -mtune=native -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"

The errors can be one of the following:

make[1]: Entering directory '/home/thermi/aur/AUR4/ocfs2-tools/src/ocfs2-tools-ocfs2-tools-1.8.5/libo2cb'
gcc -march=native -mtune=native -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -g -fvar-tracking-assignments -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -pipe -fPIC  -D_FORTIFY_SOURCE=2  -I../include -I.   -MD -MP -MF ./.o2cb_abi.d -o o2cb_abi.o -c o2cb_abi.c
In file included from o2cb_abi.c:52:0:
../include/ocfs2/ocfs2.h:57:29: fatal error: ocfs2/ocfs2_err.h: No such file or directory
 #include <ocfs2/ocfs2_err.h>
                             ^
compilation terminated.
make[1]: *** [../Postamble.make:40: o2cb_abi.o] Error 1
make -C fsck.ocfs2
make[1]: Entering directory '/home/thermi/aur/AUR4/ocfs2-tools/src/ocfs2-tools-ocfs2-tools-1.8.5/fsck.ocfs2'
generating prompt-codes.h by parsing fsck.ocfs2.checks.8.in
make[1]: *** No rule to make target '../libo2cb/libo2cb.a', needed by 'fsck.ocfs2'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/thermi/aur/AUR4/ocfs2-tools/src/ocfs2-tools-ocfs2-tools-1.8.5/fsck.ocfs2'
make: *** [Postamble.make:54: fsck.ocfs2] Error 2

No reflink utility

Hello,

There is a reflink functionnality mentionned in the manpage, but how to use it is not documented.

Oracle documentation and blog mention a reflink command line utility that cannot be found in this package.

Am i missing something ?

Regards.

can't configure

Hi
On gentoo i cant pass configure

#./configure
...
checking for tgetstr in -lncurses... no
configure: error: Unable to find ncurses library

pkg-config show

pkg-config --libs ncurses

-lncurses -ltinfo

ldconfig -v | grep nc

    libncursesw.so.6 -> libncursesw.so.6.1
    libncurses.so.6 -> libncurses.so.6.1
    libncurses++.so.6 -> libncurses++.so.6.1
    libncurses++w.so.6 -> libncurses++w.so.6.1

ltinfo is the problem ?

configure: error: Unable to find com_err library

Hello,

I ran ./autogen.sh in CentOS 8.1 but I got error as

checking for com_err... checking for com_err in -lcom_err... no
configure: error: Unable to find com_err library

Libcom_err-1.44 was installed.

Any idea about it?

Sincerely,
Yongsheng

build failed with glibc 2.28

Since glibc git 663e7d78 (to be 2.28), type loff_t will be only defined
when _DEFAULT_SOURCE defined. And with _XOPEN_SOURCE defined, _DEFAULT_SOURCE
will not be defined by default.

Build failed with

make[1]: Entering directory '/builddir/build/BUILD/ocfs2-tools-ocfs2-tools-1.8.5/libo2cb'
gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -pipe -fPIC -I../include -I. -DHAVE_CMAP -DHAVE_FSDLM -MD -MP -MF ./.o2cb_abi.d -o o2cb_abi.o -c o2cb_abi.c
In file included from o2cb_abi.c:52:
../include/ocfs2/ocfs2.h:222:2: error: unknown type name 'loff_t'
loff_t d_off; /* Offset of structure in the file */
^~~~~~

There are ways to fix this issue:

  1. Explicitly define _DEFAULT_SOURCE in all source that define _XOPEN_SOURCE
  2. Replace loff_t with off64_t, but this change some sources to include ocfs2.h first.
  3. Replace loff_t with int64_t, but this breaks type semantics.

o2image fails on s390x (big endian)

A simple script is used to validate ocfs2-tools

#!/bin/sh

set -e

DISK=$AUTOPKGTEST_TMP/disk

cleanup () {
  umount /mnt || true
  [ "$LOOP" ] && losetup -d $LOOP
  rm -f $DISK $DISK.image || true
  service o2cb stop
  sed -i -e 's/^O2CB_ENABLED=.*/O2CB_ENABLED=false/' /etc/default/o2cb
}

trap "cleanup" 0 2 3 15

# configure cluster
HOSTNAME=$(hostname)

cat >/etc/ocfs2/cluster.conf <<EOF
cluster:
        node_count = 1
        name = ocfs2

node:
        ip_port = 7777
        ip_address = 127.0.0.1
        number = 0
        name = $HOSTNAME
        cluster = ocfs2
EOF

# start cluster
sed -i -e 's/^O2CB_ENABLED=.*/O2CB_ENABLED=true/' /etc/default/o2cb
service o2cb restart

# check cluster
echo "=== dlmfs ==="
grep '^ocfs2_dlmfs /dlm' /proc/mounts

echo "=== lsmod ==="
lsmod | grep ocfs2_stack_o2cb

echo "=== o2hbmonitor ==="
pgrep -a o2hbmonitor

# print info
echo "=== o2cluster ==="
o2cluster -r

echo "=== o2cb_ctl ==="
o2cb_ctl -I -n $HOSTNAME

# create test disk
echo "=== losetup ==="
dd if=/dev/zero of=$DISK bs=1M count=200 2>&1
LOOP=$(losetup --find --show $DISK)

# test tools
echo "=== mkfs ==="
mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2 $LOOP 2>&1

echo "=== o2image ==="
o2image $LOOP $DISK.image
ls -l $DISK.image

echo "=== fsck ==="
fsck.ocfs2 -f -y $LOOP 2>&1

echo "=== o2cluster ==="
o2cluster -o $LOOP

echo "=== tunefs ==="
tunefs.ocfs2 -L $DISK -N 3 -Q 'Label = %V\nNumSlots = %N\n' $LOOP

echo "=== debugfs ==="
debugfs.ocfs2 -R stats $LOOP

echo "=== o2info ==="
o2info --volinfo $LOOP

echo "=== grow ==="
dd if=/dev/zero of=$DISK bs=1M count=50 seek=200 2>&1
losetup --set-capacity $LOOP
tunefs.ocfs2 -S $LOOP

echo "=== mount ==="
mount $LOOP /mnt
df /mnt

echo "=== mounted ==="
mounted.ocfs2 -d
mounted.ocfs2 -f

It fails with segmentation fault at this step:

o2image $LOOP $DISK.image

on an s390x big endian machine like so:

(gdb) run /dev/loop2 /home/ubuntu/disk.image
Starting program: /sbin/o2image /dev/loop2 /home/ubuntu/disk.image
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/s390x-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000000100009aea in ocfs2_set_bit (nr=0, addr=0x0) at bitops.c:52
warning: Source file is more recent than executable.
52		retval = (mask & *ADDR) != 0;
(gdb) bt full
#0  0x0000000100009aea in ocfs2_set_bit (nr=0, addr=0x0) at bitops.c:52
        mask = 1
        retval = 0
        ADDR = 0x0
#1  0x000000010001c782 in ocfs2_image_mark_bitmap (ofs=0x10005b280, blkno=229376) at image.c:250
        ost = 0x10005e000
        bitmap_blk = 7
        bit = 0
#2  0x0000000100007728 in traverse_extents (ofs=0x10005b280, el=0x10007bcc0) at o2image.c:117
        eb = 0x10007bc00
        rec = 0x10007bcd0
        ost = 0x10005e000
        ret = 0
        buf = 0x10007cc00 ""
        i = 0
        j = 229096
#3  0x0000000100008072 in traverse_inode (ofs=0x10005b280, inode=10) at o2image.c:317
        super = 0x10005c8c0
        ost = 0x10005e000
        di = 0x10007bc00
        ret = 0
        dump_type = 1
        buf = 0x10007bc00 "INODE01"
        slot = 2
#4  0x0000000100007524 in traverse_group_desc (ofs=0x10005b280, grp=0x100079400, dump_type=2, bpc=4)
    at o2image.c:76
        ret = 0
        blkno = 10
        i = 2
#5  0x000000010000792e in traverse_chains (ofs=0x10005b280, cl=0x1000780c0, dump_type=2)
    at o2image.c:155
        grp = 0x100079400
        rec = 0x1000780d0
        ret = 0
        buf = 0x100079400 "GROUP01"
        blkno = 8
        i = 0
#6  0x0000000100007f44 in traverse_inode (ofs=0x10005b280, inode=12) at o2image.c:291
        super = 0x10005c8c0
        ost = 0x10005e000
        di = 0x100078000
        ret = 0
        dump_type = 2
        buf = 0x100078000 "INODE01"
        slot = 2
#7  0x0000000100009028 in scan_raw_disk (ofs=0x10005b280) at o2image.c:633
        ost = 0x10005e000
        bits_set = 0
        ret = 51600209153546527
        i = 0
        j = 0
#8  0x00000001000097e8 in main (argc=3, argv=0x3fffffff5c8) at o2image.c:780
        ofs = 0x10005b280
        ret = 0
        src_file = 0x3fffffff81b "/dev/loop2"
        dest_file = 0x3fffffff826 "/home/ubuntu/disk.image"
        open_flags = 0
        raw_flag = 0
        install_flag = 0
---Type <return> to continue, or q <return> to quit---
        interactive = 0
        fd = 1
        c = -1

Seems like a null-pointer dereference... or an endianess bug. Specifically something might be of the wrong type, and instead of implicitly accessing the lower portion of an int (like on all little endian arches) the top bits are accessed instead which are all zeros?

Global heartbeat region can't be found (OCFS2 1.8.6 on Ubuntu 20.04)

I'm not sure if this is the right place to ask this, if there's another one, please let me know.

I can't seem to have global heartbeat work, using OCFS2 1.8.6 on Ubuntu (20.04). The local heartbeat mode works fine though.

Here's my setup:

$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 33.3M  1 loop /snap/amazon-ssm-agent/3552
loop1         7:1    0   25M  1 loop /snap/amazon-ssm-agent/4046
loop2         7:2    0 55.5M  1 loop /snap/core18/1997
loop3         7:3    0 55.4M  1 loop /snap/core18/2128
loop4         7:4    0 70.3M  1 loop /snap/lxd/21029
loop5         7:5    0 32.3M  1 loop /snap/snapd/12704
loop6         7:6    0 32.3M  1 loop /snap/snapd/11588
loop7         7:7    0 70.4M  1 loop /snap/lxd/19647
nvme1n1     259:0    0  128G  0 disk 
nvme0n1     259:1    0   16G  0 disk 
└─nvme0n1p1 259:2    0   16G  0 part /
$ sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2 --global-heartbeat /dev/nvme1n1
mkfs.ocfs2 1.8.6
Cluster stack: o2cb
Cluster name: ocfs2
Stack Flags: 0x1
NOTE: Feature extended slot map may be enabled
Label: 
Features: sparse extended-slotmap backup-super unwritten inline-data strict-journal-super xattr indexed-dirs refcount discontig-bg append-dio
Block size: 4096 (12 bits)
Cluster size: 4096 (12 bits)
Volume size: 68719476736 (16777216 clusters) (16777216 blocks)
Cluster groups: 521 (tail covers 4096 clusters, rest cover 32256 clusters)
Extent allocator size: 12582912 (3 groups)
Journal size: 268435456
Node slots: 8
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 3 block(s)
Formatting Journals: done
Growing extent allocator: done
Formatting slot map: done
Formatting quota files: done
Writing lost+found: done
mkfs.ocfs2 successful
$ sudo o2cb add-cluster ocfs2
$ sudo o2cb add-node ocfs2 ip-172-31-32-10 --ip 172.31.32.10
$ sudo o2cb add-node ocfs2 ip-172-31-32-20 --ip 172.31.32.20
$ sudo o2cb add-heartbeat ocfs2 /dev/nvme1n1
$ sudo o2cb heartbeat-mode ocfs2 global
$ cat /etc/ocfs2/cluster.conf
cluster:
	name = ocfs2
	heartbeat_mode = global
	node_count = 2

heartbeat:
	cluster = ocfs2
	region = 1FFE62175A94430EAF3BDD5E28964126

node:
	cluster = ocfs2
	number = 0
	ip_port = 7777
	ip_address = 172.31.32.10
	name = ip-172-31-32-10

node:
	cluster = ocfs2
	number = 1
	ip_port = 7777
	ip_address = 172.31.32.20
	name = ip-172-31-32-20
$ sudo tunefs.ocfs2 -Q "Label = %V\nUUID = %U\nNumSlots =%N\n" /dev/nvme1n1
Label = 
UUID = 1FFE62175A94430EAF3BDD5E28964126
NumSlots =8
$ ll /sys/kernel/config/cluster/ocfs2/heartbeat/
total 0
drwxr-xr-x 2 root root    0 Aug 14 11:14 ./
drwxr-xr-x 4 root root    0 Aug 14 11:14 ../
-rw-r--r-- 1 root root 4096 Aug 14 11:14 dead_threshold
-rw-r--r-- 1 root root 4096 Aug 14 11:20 mode
$ cat /sys/kernel/config/cluster/ocfs2/heartbeat/mode
global

Then if I try to run o2cb I get (online instead of enable gives the same output):

$ sudo service o2cb enable
checking debugfs...
Setting cluster stack "o2cb": OK
Registering O2CB cluster "ocfs2": OK
Setting O2CB cluster timeouts : OK
Starting global heartbeat for cluster "ocfs2": Failed
o2cb: Heartbeat region could not be found 1FFE62175A94430EAF3BDD5E28964126
Stopping global heartbeat on cluster "ocfs2": OK

As you can see the heartbeat region can't be found, despite my heartbeat device being initialized with --global-heartbeat and having the correct UUID. The device has no partition on it.

The nodes configuration seems correct since in local heartbeat mode the same settings work fine.

I've repeated the setup multiple times from fresh installations and I've read multiple guides which all seem to align with this. dmesg doesn't show any error, it just says o2hb: Heartbeat mode set to global as expected.

Any idea on what could be wrong?

sbin install location

I'm playing around with building on Ubuntu 14.04 and tried:

./configure --prefix=/tmp/ocfs2-tools
make
make install

However, the install is attempting to copy the following files directly under /sbin/:

o2image
mount.ocfs2
ocfs2_hb_ctl
o2cb
o2cb_ctl
debugfs.ocfs2
o2cluster
tunefs.ocfs2
mounted.ocfs2
mkfs.ocfs2
fsck.ocfs2

Is this expected behaviour!?

Under specific conditions, the mkfs result appears incorrect

After Executing the command "mkfs.ocfs2 -C 32k -J block64 [dev] -x" to mkfs a device with a size of about 129T, but the corresponding ocfs2 volume size is only about 1T. The "mkfs" command produces the following output:
Volume size: 1099509530624 (33554368 clusters) (268434944 blocks)
I checked the global_bitmap and its total bit is only 33554368, consistent with the above result.

I checked the code of mkfs and found that the error occurred at the following code section of fill_defaults() function . In the first line of the following code section,'s->volume_size_in_bytes' is of type uint64_t , 's->volume_size_in_clusters' is of type uint32_t. When the device size exceeds 128T and the Cluster_size is specified as 32k, the calculation result on the right side will exceed the maximum value of uint32_t, resulting in the truncated result in 's->volume_size_in_clusters'. Later, because the volume size needs to be cluster aligned, the wrong result is passed to 's->volume_size_in_bytes',resulting in an incorrect mkfs result.

    <mkfs.ocfs2/mkfs.c>
    s->volume_size_in_clusters = s->volume_size_in_bytes >> s->cluster_size_bits;
    tmp = (uint64_t)s->volume_size_in_clusters;
    s->volume_size_in_bytes = tmp << s->cluster_size_bits;
    s->volume_size_in_blocks = s->volume_size_in_bytes >> s->blocksize_bits;

Will changing the member volume_size_in_clusters in struct _State to type uint64_t make the program more reliable?

defrag hangs on arm64, ppc64el

Hi,

with version 1.8.6, a new tool was made available: defragfs.ocfs2. The debian package added a test for it, and ubuntu runs that test as well. Ubuntu runs it on more architectures, though, and while it passed in less than 1s on amd64, it hangs on arm64 and ppc64el, consuming 99% CPU. No visible I/O is happening (checked with iostat 2). and strace shows just the version being printed to stdout (ls -la and date are my own debugging, and I changed debian's test a bit to copy /usr/bin instead of /bin, which is a symlink in Ubuntu):

=== defragfs ===
+ cp -a /usr/bin /mnt
+ ls -la /mnt/
total 46
drwxr-xr-x  4 root root   824 Aug 21 17:53 .
drwxr-xr-x 20 root root  4096 Aug 21 17:52 ..
drwxr-xr-x  2 root root 34816 Aug 21 17:51 bin
drwxr-xr-x  2 root root   824 Aug 21 17:52 lost+found
+ date
Wed Aug 21 17:53:11 UTC 2019
+ defragfs.ocfs2 -v /mnt
defragfs.ocfs2 1.8.6
<stuck here>

strace:

2129  execve("/usr/sbin/defragfs.ocfs2", ["defragfs.ocfs2", "-v", "/mnt"], 0xfffffa721f38 /* 14 vars */) = 0
2129  brk(NULL)                         = 0xaaaaef690000
2129  faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
2129  openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
2129  fstat(3, {st_mode=S_IFREG|0644, st_size=34705, ...}) = 0
2129  mmap(NULL, 34705, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffff95391000
2129  close(3)                          = 0
2129  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
2129  read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\360C\2\0\0\0\0\0"..., 832) = 832
2129  fstat(3, {st_mode=S_IFREG|0755, st_size=1446640, ...}) = 0
2129  mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffff9538f000
2129  mmap(NULL, 1514856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffff951fb000
2129  mprotect(0xffff95354000, 65536, PROT_NONE) = 0
2129  mmap(0xffff95364000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x159000) = 0xffff95364000
2129  mmap(0xffff9536a000, 11624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffff9536a000
2129  close(3)                          = 0
2129  mprotect(0xffff95364000, 12288, PROT_READ) = 0
2129  mprotect(0xaaaac5884000, 4096, PROT_READ) = 0
2129  mprotect(0xffff9539c000, 4096, PROT_READ) = 0
2129  munmap(0xffff95391000, 34705)     = 0
2129  rt_sigaction(SIGTERM, {sa_handler=0xaaaac5872b70, sa_mask=[TERM], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
2129  rt_sigaction(SIGINT, {sa_handler=0xaaaac5872b70, sa_mask=[INT], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
2129  fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0
2129  brk(NULL)                         = 0xaaaaef690000
2129  brk(0xaaaaef6b1000)               = 0xaaaaef6b1000
2129  write(1, "defragfs.ocfs2 1.8.6\n", 21) = 21
<stuck here>

A few seconds of iostat 2:

$ iostat 2
Linux 5.2.0-13-generic (eoan-arm64) 	08/21/19 	_aarch64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          73.97    0.38    1.61    0.03    0.00   24.01

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.04         0.27         0.00        799          0
loop1             0.62         1.09         0.00       3189          0
loop2            69.33        46.78        66.65     137482     195861
vda               7.44       119.87       601.05     352272    1766317


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
         100.00    0.00    0.00    0.00    0.00    0.00

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00          0          0
loop1             0.00         0.00         0.00          0          0
loop2             1.00         0.25         0.25          0          0
vda               0.00         0.00         0.00          0          0


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
         100.00    0.00    0.00    0.00    0.00    0.00

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00          0          0
loop1             0.00         0.00         0.00          0          0
loop2             1.00         0.25         0.25          0          0
vda               1.00         0.00        12.00          0         24


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
         100.00    0.00    0.00    0.00    0.00    0.00

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00          0          0
loop1             0.00         0.00         0.00          0          0
loop2             1.00         0.25         0.25          0          0
vda               0.00         0.00         0.00          0          0

Kernel is 5.2.0-13-generic

This is the debian commit which added the test,and you can get the full test file from there as well: https://salsa.debian.org/ha-team/ocfs2-tools/commit/4db396488fe4c058bbc2e3b81529595aee3855ef

Github Releases

Hello,

There haven't been any releases since 2017 but there are lots of changes piled up that are needed. Could you please tag and public a stable release (and preferably in the regularly in the future as well), so we maintainers (I'm maintaining it on the AUR) can follow along without having to pick out single patches?

Kind regards

Thermi

Kernel errors during mount

During mount of ocfs2, a strange error is printed by the kernel mentioning floppy device.
The mount itself is successful but not sure why the message appears?

[  124.975017] ocfs2: Mounting device (7,0) on (node 1, slot 0) with ordered data mode.
[  125.027710] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  125.029687] floppy: error 10 while reading block 0
[  125.027710] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  125.029687] floppy: error 10 while reading block 0
[  125.127751] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  125.132061] floppy: error 10 while reading block 0
[  125.127751] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  125.132061] floppy: error 10 while reading block 0

compiling tunefs.ocfs2/op_query.c failed with -Werror=format-security

at commit 401407e
Fedora 26
gcc-7.1.1-3.fc26.x86_64

$ cd tunefs.ocfs2
$ gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -pipe    -I../include -Iinclude  -DVERSION=\"1.8.5\"  -MD -MP -MF ./.op_query.d -o op_query.o -c op_query.c 
op_query.c: In function ‘query_run’:
op_query.c:327:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('B', handle_blocksize, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:327:50: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('B', handle_blocksize, handle_arginfo);
                                                  ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:328:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('T', handle_clustersize, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:328:52: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('T', handle_clustersize, handle_arginfo);
                                                    ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:329:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('N', handle_numslots, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:329:49: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('N', handle_numslots, handle_arginfo);
                                                 ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:330:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('R', handle_rootdir, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:330:48: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('R', handle_rootdir, handle_arginfo);
                                                ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:331:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('Y', handle_sysdir, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:331:47: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('Y', handle_sysdir, handle_arginfo);
                                               ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:332:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('P', handle_clustergroup, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:332:53: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('P', handle_clustergroup, handle_arginfo);
                                                     ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:334:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('V', handle_label, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:334:46: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('V', handle_label, handle_arginfo);
                                              ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:335:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('U', handle_uuid, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:335:45: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('U', handle_uuid, handle_arginfo);
                                             ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:337:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('M', handle_compat, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:337:47: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('M', handle_compat, handle_arginfo);
                                               ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:338:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('H', handle_incompat, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:338:49: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('H', handle_incompat, handle_arginfo);
                                                 ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:339:2: warning: ‘register_printf_function’ is deprecated [-Wdeprecated-declarations]
  register_printf_function('O', handle_ro_compat, handle_arginfo);
  ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: declared here
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:339:50: warning: passing argument 3 of ‘register_printf_function’ from incompatible pointer type [-Wincompatible-pointer-types]
  register_printf_function('O', handle_ro_compat, handle_arginfo);
                                                  ^~~~~~~~~~~~~~
In file included from op_query.c:21:0:
/usr/include/printf.h:105:12: note: expected ‘int (*)(const struct printf_info *, size_t,  int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *)}’ but argument is of type ‘int (*)(const struct printf_info *, size_t,  int *, int *) {aka int (*)(const struct printf_info *, long unsigned int,  int *, int *)}’
 extern int register_printf_function (int __spec, printf_function __func,
            ^~~~~~~~~~~~~~~~~~~~~~~~
op_query.c:342:2: error: format not a string literal and no format arguments [-Werror=format-security]
  fprintf(stdout, fmt);
  ^~~~~~~
cc1: some warnings being treated as errors

Linux 5.3.9 crash with ocfs2

While testing ocfs2-tools I noticed that kernel 5.3.9 enters a crash loop after some ocfs2 errors so I wonder if this is a know bug somewhere?

[  101.538203] ocfs2: Mounting device (7,0) on (node 0, slot 0) with ordered data mode.
[  101.616011] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  101.619168] floppy: error 10 while reading block 0
[  101.720020] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  101.724018] floppy: error 10 while reading block 0
[  101.847482] (cp,1633,0):ocfs2_xa_set:2242 ERROR: status = -22
[  101.848302] (cp,1633,0):ocfs2_xattr_ibody_set:2786 ERROR: status = -22
[  105.999960] o2dlm: Leaving domain F2DFFDA43E844B1CB2F230D9E08CF18E
[  106.051772] blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  106.055753] floppy: error 10 while reading block 0
[  107.536390] ocfs2: Unmounting device (7,0) on (node 0)
[  108.116585] ocfs2: Unregistered cluster interface o2cb
[  121.227597] general protection fault: 0000 [#1] SMP PTI
[  121.228131] CPU: 0 PID: 2172 Comm: invoke-rc.d Not tainted 5.3.0-2-amd64 #1 Debian 5.3.9-2
[  121.228906] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
[  121.229692] RIP: 0010:__kmalloc+0xa1/0x260
[  121.230083] Code: 65 49 8b 50 08 65 4c 03 05 44 a4 bb 6d 4d 8b 30 4d 85 f6 0f 84 90 01 00 00 41 8b 5f 20 49 8b 3f 48 8d 4a 01 4c 89 f0 4c 01 f3 <48> 33 1b 49 33 9f 70 01 00 00 65 48 0f c7 0f 0f 94 c0 84 c0 74 bd
[  121.232383] RSP: 0018:ffffa75940343c08 EFLAGS: 00010286
[  121.233441] RAX: 817591233dcf4f99 RBX: 817591233dcf4f99 RCX: 00000000000570f0
[  121.234679] RDX: 00000000000570ef RSI: 0000000000000dc0 RDI: 000000000002d8c0
[  121.235929] RBP: 0000000000000dc0 R08: ffff96117ea2d8c0 R09: 0000000001010101
[  121.237165] R10: 000000000101012e R11: 00000000d118c126 R12: 0000000000000032
[  121.238398] R13: ffff96117e401700 R14: 817591233dcf4f99 R15: ffff96117e401700
[  121.239624] FS:  00007f86494f1740(0000) GS:ffff96117ea00000(0000) knlGS:0000000000000000
[  121.240934] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  121.242042] CR2: 000055ca6dba9a98 CR3: 0000000039578000 CR4: 00000000000006f0
[  121.243272] Call Trace:
[  121.244122]  ? ext4_htree_store_dirent+0x36/0x100 [ext4]
[  121.245204]  ext4_htree_store_dirent+0x36/0x100 [ext4]
[  121.246289]  htree_dirblock_to_tree+0xf5/0x290 [ext4]
[  121.247363]  ? terminate_walk+0x8c/0x100
[  121.248317]  ext4_htree_fill_tree+0xa2/0x2e0 [ext4]
[  121.249371]  ? mem_cgroup_charge_statistics+0x4c/0xd0
[  121.250440]  ? _cond_resched+0x15/0x30
[  121.251400]  ? kmem_cache_alloc_trace+0x158/0x210
[  121.252449]  ext4_readdir+0x6fc/0xa90 [ext4]
[  121.253439]  iterate_dir+0x143/0x1a0
[  121.254373]  ksys_getdents64+0x9c/0x130
[  121.255340]  ? filldir+0x170/0x170
[  121.256268]  __x64_sys_getdents64+0x16/0x20
[  121.257284]  do_syscall_64+0x53/0x140
[  121.258227]  entry_SYSCALL_64_after_hwframe+0x44/0xa9

configure does not find ncurses libs

Hi,

I got ncurses installed, but configure doesn't find it.

pkg-config --libs ncurses
-lncursesw -ltinfo
checking for libaio.h... yes
checking for tgetstr in -lncurses... no
configure: error: Unable to find ncurses library

Please advise.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.