Пропатчил ядро 2.6.28. Обнаружил при компиляции в файле file_conversion.c:int reiser4_write_begin_careful(struct file *file,
struct address_space *mapping,
loff_t pos,
unsigned len,
unsigned flags,
struct page **pagep,
void **fsdata)
{
int ret = 0;
unsigned start, end;
struct page *page;
pgoff_t index;
reiser4_context *ctx;
struct inode * inode = file->f_dentry->d_inode;
index = pos >> PAGE_CACHE_SHIFT;
start = pos & (PAGE_CACHE_SIZE - 1);
end = start + len;
page = __grab_cache_page(mapping, index);
*pagep = page;
if (!page)
return -ENOMEM;
ctx = reiser4_init_context(file->f_dentry->d_inode->i_sb);
if (IS_ERR(ctx)) {
ret = PTR_ERR(ctx);
goto out;
}
ret = PROT_PASSIVE(int, write_begin, (file, page, start, end));
/* don't commit transaction under inode semaphore */
context_set_commit_async(ctx);
reiser4_exit_context(ctx);
out:
if (unlikely(ret)) {
unlock_page(page);
page_cache_release(page);
}
return ret;
}
Компилятор ругается на строчку page = __grab_cache_page(mapping, index);
, в которой __grab_cache_page то ли неопределена, то ли определена неявно. Может кто помочь? Исправления давайте в виде примеров кода, плиз. Если кто ещё ошибки найдёт- прошу отписаться здесь же.