buffer: iterator, add linear buffer special case