1N/A Copyright (C) 1998-2001, 2007, 2009-2010 Free Software Foundation, 1N/A This program is free software; you can redistribute it and/or modify 1N/A it under the terms of the GNU General Public License as published by 1N/A the Free Software Foundation; either version 3 of the License, or 1N/A (at your option) any later version. 1N/A This program is distributed in the hope that it will be useful, 1N/A but WITHOUT ANY WARRANTY; without even the implied warranty of 1N/A MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1N/A GNU General Public License for more details. 1N/A You should have received a copy of the GNU General Public License 1N/A return 0;
/* all done! */ 1N/A/* something bad happened, so read fragments one by one. (The error may 1N/A have occurred on an unused fragment: who cares) */ 1N/A/***************************************************************************** 1N/A * here starts the write code. All assumes that ctx->buffer_map [first] and 1N/A * ctx->buffer_map [last] are occupied by fragments that need to be duplicated. 1N/A *****************************************************************************/ 1N/A/* finds the first fragment that is not going to get overwritten (that needs to 1N/A/* finds the last fragment that is not going to get overwritten (that needs to 1N/A/* "underlay" refers to the "static" fragments, that remain unchanged. 1N/A * when writing large chunks at a time, we don't want to clobber these, 1N/A * so we read them in, and write them back again. MUCH quicker that way. 1N/A/* quick_group_write() makes no attempt to recover from errors - just 1N/A * does things fast. If there is an error, slow_group_write() is 1N/A * Note: we do syncing writes, to make sure there isn't any 1N/A * error writing out. It's rather difficult recovering from errors 1N/A/* Writes fragments out, one at a time, avoiding errors on redundant writes 1N/A * on damaged parts of the disk we already know about. If there's an error 1N/A * on one of the required fragments, it gets marked as bad, and a replacement 1N/A/* assumes fragment size and new_fs's cluster size are equal */ 1N/A /* ran out of room in the buffer, so write this group, 1N/A * and start a new one... 1N/A/* default all fragments to unmoved 1N/A/* duplicates unreachable file clusters, and all directory clusters 1N/A#
endif /* !DISCOVER_ONLY */