Страница 1 из 2

Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 13:18:32
terminus
Вот это новость! :Yahoo!:

Джефри Робсон (Jeff Roberson), автор планировшика ULE и один из ключевых разработчиков FreeBSD, произвел улучшения в работе механизма Soft Updates файловой системы UFS. Им был добавлен механизм журналирования метаданных изменяемых при работе Soft Updates. Данное нововведение позволит отказаться от необходимости запуска fsck после "грязного" размонтирования файловой системы. Новая система журналирования позволяет достичь очень высокой скорости востановления состояния файловой системы при очень малом объеме журнала.

Данная работа была выполнена по заказу компаний iXsystems, Yahoo!, и Juniper networks. В ближайшее время код будет доступен пользователям ветки FreeBSD 9.0-CURRENT.

http://jeffr-tech.livejournal.com/22716.html
Journaling softupdates, SU+J
I suspect that most people who read this blog are familiar with journaling as a mechanism for ensuring post-crash filesystem consistency. Some of you may also be familiar with copy-on-write and log structured filesystems as an alternative to journaling. BSD's ffs, an extension of the original unix filesystem, has used an alternate approach called soft-updates to handle filesystem consistency for around 10 years. For the past few months, I have been creating a hybrid journaled softupdate system to deal with inadequacies in the existing softdep system. This work is opensource and will be available to FreeBSD-current users sometime this month. Behind the cut I briefly describe the tradeoffs in each consistency mechanism and motivation for this work.


If filesystem technologies are the subject of fads, it seems everything in the human experience must be. Lately we've seen an resurgence of copy-on-write (COW) filesystems which have been popularized seemingly by ZFS but have existed at least as far back as 1990's Rosenblum paper on LFS. These may be particularly attractive on flash media where seek time is not a problem and where clustering writes together can improve erase block fragmentation issues. However, on spinning media COW tends to fragment the drive and reduce the quality of allocation decisions by enforcing essentially at least two versions of any modified data to be reachable at once.

Journaled filesystems were of course the earlier fad. In this mechanism a copy of any metadata and sometimes data that is to be modified is kept in a journal, a fixed area of the disk or another disk, that logs each modification. In this mechanism the journal is replayed on reboot and the filesystem is left in a consistent state. The problem with journaling is either it's very simple and uses a tremendous amount of space and I/O with a strict transaction model that prevents some concurrency, or it becomes incredibly complex, to the tune of over 20,000 lines of code in xfs. Still I have questions about concurrency when multiple transactions affect a block in xfs, but I need to dig deeper to understand this.

Soft-updates is an alternative to this scheme where the filesystem keeps a list of dependencies that must be satisfied before a change to the filesystem can be visible on disk. For example, you wouldn't want to write a directory entry pointing at an inode until the inode was initialized on disk and marked allocated. Softdep handles this by rolling back changes to metadata that don't yet have their dependencies satisfied when we try to write a block. In this way we can commit any completed 'transactions' while keeping the disk state consistent. Softdep also allows these dependencies to discover operations which cancel each other out and thus nothing makes it to disk. For example, let's say you create a temporary file and then remove it after writing some blocks, which compilers often do, if it all happens within the interval of the syncer nothing will make it to disk.

Soft-updates guarantees that the only filesystem inconsistencies on unclean shutdown are leaked blocks and inodes. To resolve this you can run a background fsck or you can ignore it until you start to run out of space. We also could've written a mark and sweep garbage collector but never did. Ultimately, the bgfsck is too expensive and people did not like the uncertainty of not having run fsck. To resolve these issues, I have added a small journal to softupdates. However, I only have to journal block allocation and free, and inode link count changes since softdep guarantees the rest. My journal records are each only 32bytes which is incredibly compact compared to any other journaling solution. We still get the great concurrency and ability to ignore writes which have been canceled by new operations. But now we have recovery time that is around 2 seconds per megabyte of journal in-use. That's 32,768 blocks allocated, files created, links added, etc. per megabyte of journal.

This work is being funded by a group of companies, iXsystems, Yahoo!, and Juniper networks. I'm interested to see if this kind of project if feasible in the future where companies can share development costs for specific opensource projects.

The work is being done in collaboration with Kirk McKusick, the original author of ffs and softupdates. We will likely present a paper at BSDCan and then at a more formal venue following that. The code will be publicly available within two weeks.

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 13:30:31
vintovkin
что это такое?
для чего нужен??
###я чайник)

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 13:36:06
Alex Keda
атлична
====
хоть бы потрудился первести вкратце.

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 13:42:19
terminus
Чуть попереводил. на опеннет тоже закинул. :smile:
Это же рулез! UFS is back! Тормоза при fsck очень напрягают, а тут появится резон использовать ее на больших разделах где иначе нет альтернативы ZFS (если специально не нужны ее фишки какие-нить)!

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 14:04:44
vintovkin
ОГО!!!
крутэбл :smile:

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 14:19:39
angelas_
Действительно отлично! :good: :Bravo:
:smile:

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 14:22:11
Larin
гуд. сколько еще ждать до продакшена?)))

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 14:28:32
vintovkin
Larin писал(а):гуд. сколько еще ждать продакшена?)))
что значит продакшн?!

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-10 14:37:24
Larin
vintovkin писал(а):
Larin писал(а):гуд. сколько еще ждать продакшена?)))
что значит продакшн?!
когда это можно будет использовать не опасаясь.

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 0:01:39
_Andy
lissyara писал(а):атлична
====
хоть бы потрудился первести вкратце.
Чем отлично то? Кто-то мне недавно доказывал, что журнал не нужен!
http://forum.lissyara.su/viewtopic.php?p=149719#p149719

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 0:03:52
_Andy
Larin писал(а):
vintovkin писал(а):
Larin писал(а):гуд. сколько еще ждать продакшена?)))
что значит продакшн?!
когда это можно будет использовать не опасаясь.
Никогда. Пототму, что с выходом zfs, это можно смело закапывать

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 0:36:18
Alex Keda
неа.
для маленких тазиков - очень актуально.

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 9:51:10
ev
Никогда. Пототму, что с выходом zfs, это можно смело закапывать
пока zfs работает не искаропки и требует много памяти - он далеко не везде будет использоваться

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 10:44:47
Larin
_Andy писал(а):
Larin писал(а):
vintovkin писал(а):
Larin писал(а):гуд. сколько еще ждать продакшена?)))
что значит продакшн?!
когда это можно будет использовать не опасаясь.
Никогда. Пототму, что с выходом zfs, это можно смело закапывать
lissyara на хостинге вернулся с zfs на ufs:)))

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 11:26:47
Alex Keda
боян =)

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2009-12-11 11:38:55
Larin
что все таки уже zfs?)

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-01-09 12:24:04
Alex Keda
просят помочь с тестированием
http://lists.freebsd.org/pipermail/free ... 14811.html

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-01-09 15:52:11
terminus
Клева! [уже начал собирать сегодняшний CURRENT] :smile:

Заопеннетил. :smile:

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-01-09 21:07:43
terminus
Что-то у меня на сегодняшнем каренте не собралось :smile:

Код: Выделить всё

(cd /usr/src/rescue/rescue/../../sbin/dumpfs &&  make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/dumpfs/ depend && make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/dumpfs/ dumpfs.o)
rm -f .depend
mkdep -f .depend -a    -DRESCUE /usr/src/sbin/dumpfs/dumpfs.c
echo dumpfs: /usr/obj/usr/src/tmp/usr/lib/libc.a /usr/obj/usr/src/tmp/usr/lib/libufs.a >> .depend
cc -O2 -pipe  -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/dumpfs/dumpfs.c
(cd /usr/src/rescue/rescue/../../sbin/dumpon &&  make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/dumpon/ depend && make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/dumpon/ dumpon.o)
rm -f .depend
mkdep -f .depend -a    -DRESCUE /usr/src/sbin/dumpon/dumpon.c
echo dumpon: /usr/obj/usr/src/tmp/usr/lib/libc.a  >> .depend
cc -O2 -pipe  -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign -c /usr/src/sbin/dumpon/dumpon.c
(cd /usr/src/rescue/rescue/../../sbin/fsck &&  make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/fsck/ depend && make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/fsck/ fsck.o fsutil.o preen.o)
rm -f .depend
mkdep -f .depend -a    -DRESCUE /usr/src/sbin/fsck/fsck.c /usr/src/sbin/fsck/fsutil.c /usr/src/sbin/fsck/preen.c
echo fsck: /usr/obj/usr/src/tmp/usr/lib/libc.a  >> .depend
cc -O2 -pipe  -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck/fsck.c
cc -O2 -pipe  -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck/fsutil.c
cc -O2 -pipe  -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck/preen.c
(cd /usr/src/rescue/rescue/../../sbin/fsck_ffs &&  make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/fsck_ffs/ depend && make -DRESCUE CRUNCH_CFLAGS=-DRESCUE DIRPRFX=rescue/rescue/fsck_ffs/ dir.o ea.o fsutil.o inode.o main.o pass1.o pass1b.o pass2.o pass3.o pass4.o pass5.o setup.o suj.o utilities.o gjournal.o getmntopts.o)
rm -f .depend
mkdep -f .depend -a    -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -DRESCUE /usr/src/sbin/fsck_ffs/dir.c /usr/src/sbin/fsck_ffs/ea.c /usr/src/sbin/fsck_ffs/fsutil.c /usr/src/sbin/fsck_ffs/inode.c /usr/src/sbin/fsck_ffs/main.c /usr/src/sbin/fsck_ffs/pass1.c /usr/src/sbin/fsck_ffs/pass1b.c /usr/src/sbin/fsck_ffs/pass2.c /usr/src/sbin/fsck_ffs/pass3.c /usr/src/sbin/fsck_ffs/pass4.c /usr/src/sbin/fsck_ffs/pass5.c /usr/src/sbin/fsck_ffs/setup.c /usr/src/sbin/fsck_ffs/suj.c /usr/src/sbin/fsck_ffs/utilities.c /usr/src/sbin/fsck_ffs/gjournal.c /usr/src/sbin/fsck_ffs/../mount/getmntopts.c
echo fsck_ffs: /usr/obj/usr/src/tmp/usr/lib/libc.a /usr/obj/usr/src/tmp/usr/lib/libufs.a >> .depend
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/dir.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/ea.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/fsutil.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/inode.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/main.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass1.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass1b.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass2.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass3.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass4.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/pass5.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/setup.c
cc -O0 -pipe -I/usr/src/sbin/fsck_ffs -I/usr/src/sbin/fsck_ffs/../mount -g -DRESCUE -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/fsck_ffs/suj.c
In file included from /usr/src/sbin/fsck_ffs/suj.c:1982:
/usr/src/sbin/fsck_ffs/fsck.h:72: error: redefinition of 'union dinode'
/usr/src/sbin/fsck_ffs/fsck.h:94: error: redefinition of 'struct inostat'
/usr/src/sbin/fsck_ffs/fsck.h:121: error: redefinition of 'struct inostatlist'
/usr/src/sbin/fsck_ffs/fsck.h:129: error: redefinition of 'struct bufarea'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: nested redefinition of 'enum fixstate'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: redeclaration of 'enum fixstate'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: redeclaration of enumerator 'DONTKNOW'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: previous definition of 'DONTKNOW' was here
/usr/src/sbin/fsck_ffs/fsck.h:185: error: redeclaration of enumerator 'NOFIX'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: previous definition of 'NOFIX' was here
/usr/src/sbin/fsck_ffs/fsck.h:185: error: redeclaration of enumerator 'FIX'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: previous definition of 'FIX' was here
/usr/src/sbin/fsck_ffs/fsck.h:185: error: redeclaration of enumerator 'IGNORE'
/usr/src/sbin/fsck_ffs/fsck.h:185: error: previous definition of 'IGNORE' was here
/usr/src/sbin/fsck_ffs/fsck.h:188: error: redefinition of 'struct inodesc'
/usr/src/sbin/fsck_ffs/fsck.h:230: error: redefinition of 'struct dups'
/usr/src/sbin/fsck_ffs/fsck.h:240: error: redefinition of 'struct inoinfo'
/usr/src/sbin/fsck_ffs/suj.c:1990: error: redefinition of 'struct suj_seg'
/usr/src/sbin/fsck_ffs/suj.c:1996: error: redefinition of 'struct suj_rec'
/usr/src/sbin/fsck_ffs/suj.c:2000: error: redefinition of 'struct srechd'
/usr/src/sbin/fsck_ffs/suj.c:2002: error: redefinition of 'struct suj_ino'
/usr/src/sbin/fsck_ffs/suj.c:2012: error: redefinition of 'struct inohd'
/usr/src/sbin/fsck_ffs/suj.c:2014: error: redefinition of 'struct suj_blk'
/usr/src/sbin/fsck_ffs/suj.c:2019: error: redefinition of 'struct blkhd'
/usr/src/sbin/fsck_ffs/suj.c:2021: error: redefinition of 'struct data_blk'
/usr/src/sbin/fsck_ffs/suj.c:2028: error: redefinition of 'struct ino_blk'
/usr/src/sbin/fsck_ffs/suj.c:2034: error: redefinition of 'struct iblkhd'
/usr/src/sbin/fsck_ffs/suj.c:2036: error: redefinition of 'struct suj_cg'
/usr/src/sbin/fsck_ffs/suj.c:2048: error: redefinition of 'struct cghd'
/usr/src/sbin/fsck_ffs/suj.c:2049: error: redefinition of 'struct dblkhd'
/usr/src/sbin/fsck_ffs/suj.c:2051: error: redefinition of 'struct seghd'
/usr/src/sbin/fsck_ffs/suj.c:2053: error: redefinition of 'disk'
/usr/src/sbin/fsck_ffs/suj.c:119: error: previous definition of 'disk' was here
/usr/src/sbin/fsck_ffs/suj.c:2054: error: redefinition of 'fs'
/usr/src/sbin/fsck_ffs/suj.c:120: error: previous definition of 'fs' was here
/usr/src/sbin/fsck_ffs/suj.c:2064: error: redefinition of typedef 'ino_visitor'
/usr/src/sbin/fsck_ffs/suj.c:130: error: previous declaration of 'ino_visitor' was here
/usr/src/sbin/fsck_ffs/suj.c:2068: error: redefinition of 'errmalloc'
/usr/src/sbin/fsck_ffs/suj.c:134: error: previous definition of 'errmalloc' was here
/usr/src/sbin/fsck_ffs/suj.c:2082: error: redefinition of 'opendisk'
/usr/src/sbin/fsck_ffs/suj.c:148: error: previous definition of 'opendisk' was here
/usr/src/sbin/fsck_ffs/suj.c:2106: error: redefinition of 'closedisk'
/usr/src/sbin/fsck_ffs/suj.c:172: error: previous definition of 'closedisk' was here
/usr/src/sbin/fsck_ffs/suj.c:2142: error: redefinition of 'cg_lookup'
/usr/src/sbin/fsck_ffs/suj.c:208: error: previous definition of 'cg_lookup' was here
/usr/src/sbin/fsck_ffs/suj.c:2173: error: redefinition of 'ino_lookup'
/usr/src/sbin/fsck_ffs/suj.c:239: error: previous definition of 'ino_lookup' was here
/usr/src/sbin/fsck_ffs/suj.c:2201: error: redefinition of 'blk_lookup'
/usr/src/sbin/fsck_ffs/suj.c:267: error: previous definition of 'blk_lookup' was here
/usr/src/sbin/fsck_ffs/suj.c:2224: error: redefinition of 'dblk_read'
/usr/src/sbin/fsck_ffs/suj.c:290: error: previous definition of 'dblk_read' was here
/usr/src/sbin/fsck_ffs/suj.c:2257: error: redefinition of 'ino_read'
/usr/src/sbin/fsck_ffs/suj.c:323: error: previous definition of 'ino_read' was here
/usr/src/sbin/fsck_ffs/suj.c:2291: error: redefinition of 'ino_dirty'
/usr/src/sbin/fsck_ffs/suj.c:357: error: previous definition of 'ino_dirty' was here
/usr/src/sbin/fsck_ffs/suj.c:2317: error: redefinition of 'iblk_write'
/usr/src/sbin/fsck_ffs/suj.c:383: error: previous definition of 'iblk_write' was here
/usr/src/sbin/fsck_ffs/suj.c:2331: error: redefinition of 'ino_isfree'
/usr/src/sbin/fsck_ffs/suj.c:397: error: previous definition of 'ino_isfree' was here
/usr/src/sbin/fsck_ffs/suj.c:2347: error: redefinition of 'blk_overlaps'
/usr/src/sbin/fsck_ffs/suj.c:413: error: previous definition of 'blk_overlaps' was here
/usr/src/sbin/fsck_ffs/suj.c:2363: error: redefinition of 'blk_equals'
/usr/src/sbin/fsck_ffs/suj.c:429: error: previous definition of 'blk_equals' was here
/usr/src/sbin/fsck_ffs/suj.c:2376: error: redefinition of 'blk_setmask'
/usr/src/sbin/fsck_ffs/suj.c:442: error: previous definition of 'blk_setmask' was here
/usr/src/sbin/fsck_ffs/suj.c:2393: error: redefinition of 'blk_isfree'
/usr/src/sbin/fsck_ffs/suj.c:459: error: previous definition of 'blk_isfree' was here
/usr/src/sbin/fsck_ffs/suj.c:2443: error: redefinition of 'blk_isindir'
/usr/src/sbin/fsck_ffs/suj.c:509: error: previous definition of 'blk_isindir' was here
/usr/src/sbin/fsck_ffs/suj.c:2465: error: redefinition of 'ino_free'
/usr/src/sbin/fsck_ffs/suj.c:531: error: previous definition of 'ino_free' was here
/usr/src/sbin/fsck_ffs/suj.c:2502: error: redefinition of 'blk_free'
/usr/src/sbin/fsck_ffs/suj.c:568: error: previous definition of 'blk_free' was here
/usr/src/sbin/fsck_ffs/suj.c:2546: error: redefinition of 'indir_blkatoff'
/usr/src/sbin/fsck_ffs/suj.c:612: error: previous definition of 'indir_blkatoff' was here
/usr/src/sbin/fsck_ffs/suj.c:2597: error: redefinition of 'ino_blkatoff'
/usr/src/sbin/fsck_ffs/suj.c:663: error: previous definition of 'ino_blkatoff' was here
/usr/src/sbin/fsck_ffs/suj.c:2654: error: redefinition of 'blk_isat'
/usr/src/sbin/fsck_ffs/suj.c:720: error: previous definition of 'blk_isat' was here
/usr/src/sbin/fsck_ffs/suj.c:2673: error: redefinition of 'ino_isat'
/usr/src/sbin/fsck_ffs/suj.c:739: error: previous definition of 'ino_isat' was here
/usr/src/sbin/fsck_ffs/suj.c:2766: error: redefinition of 'indir_visit'
/usr/src/sbin/fsck_ffs/suj.c:832: error: previous definition of 'indir_visit' was here
/usr/src/sbin/fsck_ffs/suj.c:2827: error: redefinition of 'ino_visit'
/usr/src/sbin/fsck_ffs/suj.c:893: error: previous definition of 'ino_visit' was here
/usr/src/sbin/fsck_ffs/suj.c:2877: error: redefinition of 'null_visit'
/usr/src/sbin/fsck_ffs/suj.c:943: error: previous definition of 'null_visit' was here
/usr/src/sbin/fsck_ffs/suj.c:2888: error: redefinition of 'ino_adjblks'
/usr/src/sbin/fsck_ffs/suj.c:954: error: previous definition of 'ino_adjblks' was here
/usr/src/sbin/fsck_ffs/suj.c:2915: error: redefinition of 'blk_free_visit'
/usr/src/sbin/fsck_ffs/suj.c:981: error: previous definition of 'blk_free_visit' was here
/usr/src/sbin/fsck_ffs/suj.c:2931: error: redefinition of 'blk_free_lbn'
/usr/src/sbin/fsck_ffs/suj.c:997: error: previous definition of 'blk_free_lbn' was here
/usr/src/sbin/fsck_ffs/suj.c:2947: error: redefinition of 'ino_free_children'
/usr/src/sbin/fsck_ffs/suj.c:1013: error: previous definition of 'ino_free_children' was here
/usr/src/sbin/fsck_ffs/suj.c:3019: error: redefinition of 'ino_truncate'
/usr/src/sbin/fsck_ffs/suj.c:1085: error: previous definition of 'ino_truncate' was here
/usr/src/sbin/fsck_ffs/suj.c:3057: error: redefinition of 'ino_decr'
/usr/src/sbin/fsck_ffs/suj.c:1123: error: previous definition of 'ino_decr' was here
/usr/src/sbin/fsck_ffs/suj.c:3092: error: redefinition of 'ino_adjust'
/usr/src/sbin/fsck_ffs/suj.c:1158: error: previous definition of 'ino_adjust' was here
/usr/src/sbin/fsck_ffs/suj.c:3143: error: redefinition of 'ino_check'
/usr/src/sbin/fsck_ffs/suj.c:1209: error: previous definition of 'ino_check' was here
/usr/src/sbin/fsck_ffs/suj.c:3229: error: redefinition of 'blk_check'
/usr/src/sbin/fsck_ffs/suj.c:1295: error: previous definition of 'blk_check' was here
/usr/src/sbin/fsck_ffs/suj.c:3287: error: redefinition of 'cg_check'
/usr/src/sbin/fsck_ffs/suj.c:1353: error: previous definition of 'cg_check' was here
/usr/src/sbin/fsck_ffs/suj.c:3313: error: redefinition of 'cg_write'
/usr/src/sbin/fsck_ffs/suj.c:1379: error: previous definition of 'cg_write' was here
/usr/src/sbin/fsck_ffs/suj.c:3367: error: redefinition of 'cg_apply'
/usr/src/sbin/fsck_ffs/suj.c:1433: error: previous definition of 'cg_apply' was here
/usr/src/sbin/fsck_ffs/suj.c:3384: error: redefinition of 'suj_build_ino'
/usr/src/sbin/fsck_ffs/suj.c:1450: error: previous definition of 'suj_build_ino' was here
/usr/src/sbin/fsck_ffs/suj.c:3420: error: redefinition of 'suj_move_ino'
/usr/src/sbin/fsck_ffs/suj.c:1486: error: previous definition of 'suj_move_ino' was here
/usr/src/sbin/fsck_ffs/suj.c:3458: error: redefinition of 'suj_build_blk'
/usr/src/sbin/fsck_ffs/suj.c:1524: error: previous definition of 'suj_build_blk' was here
/usr/src/sbin/fsck_ffs/suj.c:3511: error: redefinition of 'suj_build'
/usr/src/sbin/fsck_ffs/suj.c:1577: error: previous definition of 'suj_build' was here
/usr/src/sbin/fsck_ffs/suj.c:3551: error: redefinition of 'suj_prune'
/usr/src/sbin/fsck_ffs/suj.c:1617: error: previous definition of 'suj_prune' was here
/usr/src/sbin/fsck_ffs/suj.c:3612: error: redefinition of 'suj_verifyino'
/usr/src/sbin/fsck_ffs/suj.c:1678: error: previous definition of 'suj_verifyino' was here
/usr/src/sbin/fsck_ffs/suj.c:3631: error: redefinition of 'struct jblocks'
/usr/src/sbin/fsck_ffs/suj.c:3638: error: redefinition of 'struct jextent'
/usr/src/sbin/fsck_ffs/suj.c:3647: error: redefinition of 'jblocks_create'
/usr/src/sbin/fsck_ffs/suj.c:1713: error: previous definition of 'jblocks_create' was here
/usr/src/sbin/fsck_ffs/suj.c:3669: error: redefinition of 'jblocks_next'
/usr/src/sbin/fsck_ffs/suj.c:1735: error: previous definition of 'jblocks_next' was here
/usr/src/sbin/fsck_ffs/suj.c:3699: error: redefinition of 'jblocks_advance'
/usr/src/sbin/fsck_ffs/suj.c:1765: error: previous definition of 'jblocks_advance' was here
/usr/src/sbin/fsck_ffs/suj.c:3706: error: redefinition of 'jblocks_destroy'
/usr/src/sbin/fsck_ffs/suj.c:1772: error: previous definition of 'jblocks_destroy' was here
/usr/src/sbin/fsck_ffs/suj.c:3714: error: redefinition of 'jblocks_add'
/usr/src/sbin/fsck_ffs/suj.c:1780: error: previous definition of 'jblocks_add' was here
/usr/src/sbin/fsck_ffs/suj.c:3755: error: redefinition of 'suj_add_block'
/usr/src/sbin/fsck_ffs/suj.c:1821: error: previous definition of 'suj_add_block' was here
/usr/src/sbin/fsck_ffs/suj.c:3762: error: redefinition of 'suj_read'
/usr/src/sbin/fsck_ffs/suj.c:1828: error: previous definition of 'suj_read' was here
/usr/src/sbin/fsck_ffs/suj.c:3830: error: redefinition of 'suj_check'
/usr/src/sbin/fsck_ffs/suj.c:1896: error: previous definition of 'suj_check' was here
*** Error code 1

Stop in /usr/src/sbin/fsck_ffs.
*** Error code 1

Stop in /usr/obj/usr/src/rescue/rescue.
*** Error code 1

Stop in /usr/src/rescue/rescue.
*** Error code 1

Stop in /usr/src/rescue.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
evo#                                                                                                               
:"":

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-01-09 21:23:55
Alex Keda
в рассылку закинь

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-01-09 21:29:31
terminus
Счас еще одну штуку попробую, если не получится - отпишусь.

У меня исходники от карента, но система еще 8.0-релиз :oops: Я решил одним махом накатить ее до карента и сразу же в процессе поставить патчи. Может поэтому не собирается, что родительская еще как бы не очень карент. :"": Сча сделаю карент по честному и попробую уже на нем...

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-04-21 14:16:27
terminus
http://lists.freebsd.org/pipermail/free ... 16746.html
Hi Folks,

You may have seen my other Soft-updates journaling (SUJ) announcements.
If not, it is a journaling system that works cooperatively with
soft-updates to eliminate the full background filesystem check after an
unclean shutdown. SUJ may be enabled with tunefs -j enable and disabled
with tunefs -j disable on an unmounted filesystem. It is backwards
compatible with soft-updates with no journal.

I'm going to do another round of tests and buildworld this afternoon to
verify the diff and then I'm committing to head. This is a very large
feature and fundamentally changes softupdates. Although it has been
extensively tested by many there may be unforseen problems. If you run
into an issue that you think may be suj please email me directly as well
as posting on current as I sometimes miss list email and this will ensure
the quickest response.

Thanks,
Jeff
SUJ теперь в CURRENT :good:

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-04-21 15:08:36
Alex Keda
атлично
ждём когда в 8 и можно потестить на продакшене =))

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-04-21 19:58:31
Alex Keda
тока что обновился пересобрался

Код: Выделить всё

tunefs -j
грит что нет такой опции.
чё-то недокоммитили чтоли?

Re: Jeff Roberson добавил журналирование к UFS

Добавлено: 2010-04-21 19:59:00
Alex Keda
билят, почитал подробней - он ещё тестит...